首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们真的需要EDT吗?

我们真的需要EDT吗?
EN

Stack Overflow用户
提问于 2013-01-05 20:42:13
回答 1查看 148关注 0票数 1

很多次我都在想,为什么Java强迫我们在使用EDT的同时使用Swing?从任何Thread更新Swing组件不是更容易吗?换句话说,它可以是multithreaded

事实上,SwingUtilities.invokeAndWaitSwingUtilities.invokeLater帮助我们排列Swing事件,但是,如果GUI组件可以从任何其他Thread更新,它们就不会出现在画面中。

而且,Java开发者真的忘记了让Swing线程安全吗?

如果swing是多线程的,会出现什么问题?我的Java程序已经“冻结”了十几次,原因是:/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-05 20:47:01

如果swing是多线程的,会出现什么问题?Java开发者真的忘记了让Swing线程安全吗?

已经进行了许多尝试来创建多线程GUI,但most have failed要么是因为它们不工作,要么是因为它们过于复杂而无法正确使用。单线程模型是标准的也是最简单的解决方案。

我的Java程序因为这个而被“冻结”了十几次

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

小心地使用并发性对Swing程序员特别重要。一个编写良好的Swing程序使用并发来创建一个永远不会“冻结”的用户界面--程序总是对用户交互做出响应,无论它在做什么。要创建响应式程序,程序员必须了解Swing框架是如何使用线程的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14171892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档