2017-06-21 63 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元素。

相关问题