2014-12-13 72 views
1

我已经在很多地方读取发布线程,该线程池减少线程创建开销,这会导致更高的性能。但是一旦一个线程完成执行它的运行方法,就会进入死/终止状态,这意味着它可以重新启动。如何创建和线程池

那么,如何线程池手柄释放线程的?它是否真的让线程为下一个任务提供服务,或者它在内部每次提交任务时都会创建新的线程?

+2

它重新使用它创建的线程。这就是它减少线程创建的方式。它被记录下来,并且源代码可用。 – 2014-12-13 18:37:08

+0

它不释放它们。它在不使用时将它们保存在可用列表中。 – Kevin 2014-12-13 18:38:54

+0

我明白了。它永远不允许线程到达终止状态,除非它需要终止线程。 – 2014-12-13 19:18:23

回答

1

线程池内部有列表,它是正在使用的和线程的占位符,当有需求,并将它们添加到这个列表,当它完成了执行或创建一个新的时一个终止,并通过增长保持他们数量还是减少,这取决于您是否要求缓存或固定线程池。

+0

我没有看到源代码,其中的线程将添加和检索的要求,正如我上面的评论,它看起来像线程保持活力和哪个线程拿起传入的任务,开始与他们合作的任何名单。希望我的理解是正确的 – 2014-12-13 19:23:08

+0

我不确定你在哪里看,但看到[this](http://j6a.ru/classcom_1_1sun_1_1corba_1_1se_1_1impl_1_1orbutil_1_1threadpool_1_1_thread_pool_impl.html#ae115183d2b25be0185d7e6afc9d60427)供您参考。我会建议你将src.zip附加到你的IDE中,并通过代码。 – SMA 2014-12-14 06:19:30

0

固定大小的线程池保留线程,直到关机。

的缓存的线程池保持线程缺省为60秒。