2011-03-31 50 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