2017-06-21 67 views
0

據我所知,線程池是一個在等待模式中重用已創建的線程併爲其分配任務的進程。這些線程的數量是在創建池時指定的。AWT中的Java Thread Pooling和Java EventQueue背後的概念有沒有相似之處?

而在Java AWT中,EventQueue也做了類似的事情。它在Event Queue的末尾發佈一個Runnable Swing對象,並且在先前對象的處理結束後處理該對象。

那麼,EventQueue是AWT中的一種線程池嗎?

非常感謝!

+0

簡短的回答是否定的 - EventQueue由**單**線程(Event Dispatching Thread)處理。當它彈出隊列的'Runnable'時,它只是調用'run'方法,否則它會根據EDT的內部需求處理事件 – MadProgrammer

+0

非常感謝@MadProgrammer! – julianff

回答

2

不,甚至隱約可見。您的ThreadPool描述是正確的,但我不明白爲什麼您認爲這與事件隊列類似。

事件隊列基本上是一個線程上的東西的集合,以確保某些操作只發生在正確的線程上。沒有事件隊列或類似的「池」。

+0

謝謝@ John3126!我想我明白你的意思了。所以EventQueue是一個在單個線程上維護的隊列嗎? – julianff

+0

任何線程都可以添加到它(這是線程如何在事件調度線程上運行的東西),但它僅由EDT「使用」。 – John3136

0

awt.EventQueue可以視爲單線程池執行程序。單線程是在修改屏幕圖像時排除並行性。

如果您使用Akka actors,您可以創建專門的調度程序來運行awt.EventQueue上的actor。具有這種調度器的Actor可以修改GUI元素。

相關問題