2009-12-08 124 views
2

我已经看到几个评论,说明执行程序比线程更好,但是如果有多个线程通过有界缓冲区进行通信(如基于流程编程),为什么无论如何你必须使用线程(使用newCachedThreadPool(?))时,你会使用Executors吗?此外,我使用isAlive(),interrupt()这样的方法 - 如何获得线程句柄?执行程序优于多线程应用程序中的线程

有没有人有我可以抄袭的示例代码? ;-)

+0

我建议你购买并阅读http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601/ref=sr_1_1?ie=UTF8&s=books&qid=1260237309&sr=8-1封面盖。 – cletus 2009-12-08 01:55:31

+0

不是很有帮助,@Cletus!我对线程和锁有所了解 - 我不打算花40美元来获得一个问题的答案:-) – 2009-12-08 20:57:19

+0

一天后没有答案,所以我会在太阳论坛上尝试......谢谢! – 2009-12-09 18:07:01

回答

1

执行者基本上是线程的抽象。它们使您在Runnable/Callable实例中隔离您的潜在并行逻辑,同时将您从手动创建和启动线程或管理池中解放出来。作为应用程序逻辑的一部分,您仍然需要处理依赖关系。

如果您想与应用程序逻辑的线程进行交互/操作,您可以跳过使用执行程序。关于获取线程,您始终可以执行Thread.currentThread()以从任何正在执行的上下文中获取当前线程。