2013-08-07 46 views
1

我是新來的java,並有一個面試問題,我不明白的研究生角色,所以你可以告訴我哪個線程和它的目的請。哪個線程運行所有的AWT/swing事件處理代碼?

+0

要去面試嗎?你似乎毫無準備。 –

+0

請閱讀[併發中的Swing](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/),瞭解更多信息,請參閱:-) –

回答

3

Swing UI工具包是單線程的(從任何其他線程調用任何swing庫都是不安全的)。所有的UI事件,包括渲染和調度都由EDT thread完成。

所以點擊桌面上的按鈕。操作系統通知EDT接收事件,然後觸發爲按鈕點擊註冊的回調函數。此外,從代碼,當你做一些行動(例如:重畫屏幕或繪製圖像)。 EDT將更改提供給操作系統,並將其顯示在屏幕上。因此是雙向交互。

因爲如上所述Swing UI工具包是單線程的。因此,建議從EDT調用任何Swing庫,僅使用System.invokeLater。更多信息here

3

您正在尋找Event Dispatch Thread

瞭解它非常重要。瞭解代碼將運行的線程至關重要 - 長時間運行的任務應該在EDT上運行而不是。相反,請在自己的線程上分派這些任務,然後在操作結束時運行回調以使用SwingUtilities更新GUI。

相關問題