Java Swing事件调度线程的运行优先级是否高于主线程?

Java Swing事件调度线程的运行优先级是否高于主线程?,java,multithreading,swing,Java,Multithreading,Swing,当我在不指定任何线程优先级的情况下创建Java Swing应用程序时,事件分派线程是否以比主线程更高的优先级运行?我知道这并不能保证主线程永远不会中断事件调度线程。为什么要做出这样的假设 Swing的规则是,所有更新GUI的代码都应该在EDT上执行,以便所有对Swing组件的更新都按顺序完成 此规则的原因是您无法控制线程何时中断,因此您不希望另一个线程同时更新同一GUI组件,这将使该组件处于不一致的状态,这将导致无法复制的随机问题。是。 EDT的运行优先级高于主线程,如下所示: import j

当我在不指定任何线程优先级的情况下创建Java Swing应用程序时,事件分派线程是否以比主线程更高的优先级运行?我知道这并不能保证主线程永远不会中断事件调度线程。

为什么要做出这样的假设

Swing的规则是,所有更新GUI的代码都应该在EDT上执行,以便所有对Swing组件的更新都按顺序完成

此规则的原因是您无法控制线程何时中断,因此您不希望另一个线程同时更新同一GUI组件,这将使该组件处于不一致的状态,这将导致无法复制的随机问题。

是。

EDT的运行优先级高于主线程,如下所示:

import java.awt.EventQueue;

public class Test {

    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getPriority());
        EventQueue.invokeLater(() -> {
            System.out.println(Thread.currentThread().getPriority());
        });
    }
}
输出:

5
6.

请注意,
5==Thread.NORM\u PRIORITY
10==Thread.MAX\u PRIORITY

此规则的原因是为了在很大程度上避免在Swing中使用同步方法。谢谢,但尽管您已经证明了这对于一个实现是正确的,我在javadoc中找不到任何东西可以保证所有的实现都是如此。@espertus:你可能不会t@HovercraftFullOfEels那么我猜答案是“可能”,而不是“是”。