我们真的需要EDT吗?

joe*_*han 1 java swing multithreading awt thread-safety

很多次我认为为什么在工作时Java强迫我们使用EDTSwingSwing从任何Thread或者换句话说更新组件都不会更容易multithreaded.

实际上,SwingUtilities.invokeAndWait并且SwingUtilities.invokeLater帮助我们排列Swing事件,但是,如果GUI 组件可以从任何其他组件更新,它们将不会出现Thread.

而且,Java制造商真的忘记制作Swing线程安全吗?

如果swing是多线程的,可能会出现什么问题?我的Java程序有"冻结"十几个时间因为这个:/

ass*_*ias 7

如果swing是多线程的,可能会出现什么问题?让Java制造商真的忘记让Swing Thread-Safe?

已经进行了许多尝试来创建多线程GUI,但大多数都失败了,因为它们不起作用或者它们使用起来过于复杂.单线程模型是标准和最简单的解决方案.

我的Java程序已经"冻结"了十几次这个时间

那是因为你没有按照你应该的方式使用Swing.它是单线程的事实并不妨碍你在另一个线程上运行长任务(你应该这样做以防止冻结).您可以在Swing Tutorial中的Concurrency中阅读更多相关内容.特别是:

仔细使用并发对Swing程序员来说尤为重要.一个写得很好的Swing程序使用并发来创建一个永远不会"冻结"的用户界面 - 无论它在做什么,程序总是响应用户交互.要创建响应式程序,程序员必须了解Swing框架如何使用线程.