2011-03-31 52 views
2

有人说,“Swing工具包是不是多线程安全Swing工具包和多线程

什么是这个声明意味着

+0

http://stackoverflow.com/questions/2564388/javas-swing-threading – andersoj 2011-03-31 11:37:02

+0

http://stackoverflow.com/questions/1429681/what-happens-when-swings-threading-policy-is-violated – andersoj 2011-03-31 11:37:28

+1

可能重复[Java:Swing库和线程安全](http://stackoverflow.com/questions/182316/java-swing-libraries-thread-safety) – andersoj 2011-03-31 11:38:31

回答

4

检查此链接:??http://www.jguru.com/faq/view.jsp?EID=131370

所以为了简化 Swing库的实现,他们选择了它不是 线程安全。参数是 大多数的GUI相关工作发生在 从GUI的回调中,其中 发生在单个GUI线程 反正。诚然 - 对于长时间运行的任务 用户将不得不做更多的工作 如果他/她想要做 多线程的活动......

专门为JFC给出的链接。

而且此链接:http://www.it.uu.se/edu/course/homepage/devgui/vt03/out/ThreadsAndSwing.pdf

Swing组件后一直显示在屏幕上 ,他们应该 只能由 事件处理线程操作上。当应用程序具有 图形界面时, 事件处理线程(或只是事件 线程)由 自动启动。事件线程 调用的方法,如在 组件,的actionPerformed()上 的ActionListener paint()方法,和所有的其他 事件处理方法


地址

检查第二个链接我已经给出了,特别是该部分:在GUI设置工作线程的需要(也有一个例子来解释它)。这里引用以供参考:

事件线程中发挥了应用程序与图形界面 关键作用 。事件处理线程将执行 的代码应该是 相对简短且不阻塞。如果 事件处理线程在段代码中被阻止 一段时间,则不能处理其他事件! 其他事件可以被处理!

+0

@ Favonius为什么我们不应该在一个事件中有长时间运行的任务什么时候使用swing? – 2011-03-31 12:02:13

+0

@Suhail Gupta:我已经更新了我的答案。请检查一下。另请参阅@andersoj针对您的问题所提供的链接。 – Favonius 2011-03-31 12:39:43