繁体   English   中英

Swing库的强制EDT线程

[英]Forcing EDT Thread for Swing Libraries

所有与GUI相关的代码仅应从EDT执行。 Android开发中,类似的事情似乎是强制执行的,因此,如果您在主线程中进行了网络调用等操作,您将获得异常。 但是,对于开发Java桌面应用程序,没有这种东西。 很容易忘记EDT并仍在另一个线程中执行GUI代码。 这可能会导致奇怪的故障/错误,因为Swing不是线程安全的 有没有一种方法可以默认对每个GUI代码强加EDT的使用,类似于Android更加严格的方法? 我不想手动检查所有内容,而是在违反EDT使用建议的情况下得到异常。 我正在使用IntelliJ IDEA

就Java代码而言,可以为每个Swing库方法自动插入以下内容:

if(!SwingUtilities.isEventDispatchThread())
{
    throw new IllegalStateException("EDT property violated");
}

有什么办法吗?

有一个ThreadCheckingRepaintManager,请参见此处: ThreadCheckingRepaintManager

您可以像这样使用它:

public static void main(String args[]) {
        RepaintManager.setCurrentManager(new ThreadCheckingRepaintManager(true));
        //Create your UI here
    }

现在,只要有EDT问题,您都将在控制台中获得一条信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM