我是新來的java,並有一個面試問題,我不明白的研究生角色,所以你可以告訴我哪個線程和它的目的請。哪個線程運行所有的AWT/swing事件處理代碼?
1
A
回答
3
Swing UI工具包是單線程的(從任何其他線程調用任何swing庫都是不安全的)。所有的UI事件,包括渲染和調度都由EDT thread
完成。
所以點擊桌面上的按鈕。操作系統通知EDT接收事件,然後觸發爲按鈕點擊註冊的回調函數。此外,從代碼,當你做一些行動(例如:重畫屏幕或繪製圖像)。 EDT
將更改提供給操作系統,並將其顯示在屏幕上。因此是雙向交互。
因爲如上所述Swing UI工具包是單線程的。因此,建議從EDT調用任何Swing庫,僅使用System.invokeLater。更多信息here。
3
您正在尋找Event Dispatch Thread。
瞭解它非常重要。瞭解代碼將運行的線程至關重要 - 長時間運行的任務應該在EDT上運行而不是。相反,請在自己的線程上分派這些任務,然後在操作結束時運行回調以使用SwingUtilities
更新GUI。
相關問題
- 1. 哪個線程做backgroundworker完成事件處理程序運行?
- 2. 如何在處理所有其他事件後運行代碼
- 3. 哪個線程是處理對象的事件處理?
- 4. Numericupdownextender事件處理程序的代碼
- 5. Symfony2:在哪裏放置代碼運行所有路線?
- 6. 在一個處理程序中處理所有事件?
- 7. 從事件處理程序運行自殺線程
- 8. SelectedIndexChange事件處理程序代碼
- 9. 處理多線程事件
- 10. 線程事件處理(C#)
- 11. 帶線程事件處理
- 12. C#線程處理事件
- 13. 文件處理:代碼停止運行
- 14. 批處理文件未運行代碼
- 15. 我應該處理哪個線程RxTx SerialEvent.DATA_AVAILABLE事件?
- 16. 事件處理不運行
- 17. 在一個正在運行的線程中處理一個事件
- 18. 事件處理程序的調用者已經退出後的運行代碼
- 19. WSO2 Identity Server - 事件處理程序 - 處理了哪些事件?
- 20. 委託代碼從主線程運行主線程來處理gui
- 21. 驗證執行的事件處理程序代碼
- 22. 線程運行中的處理程序
- 23. 什麼是事件處理程序後運行代碼的正確方法?
- 24. C#事件:哪個線程
- 25. 具有單核處理器和多核處理器的單線程代碼的多線程代碼
- 26. 事件處理程序運行僅在前面的事件處理完畢
- 27. 確定我的代碼當前在哪個物理處理器上運行
- 28. 在哪個代碼文件中,我應該將事件處理程序分配給哪個文件以控制?
- 29. 創建一個新的事件處理程序和源代碼
- 30. 如何在所有線程完成時運行代碼
要去面試嗎?你似乎毫無準備。 –
請閱讀[併發中的Swing](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/),瞭解更多信息,請參閱:-) –