【发布时间】:2016-07-20 17:20:27
【问题描述】:
这里是我指的方法,想知道如果我调用submit,不使用Future的get方法获取结果,会不会有线程泄漏(我的意思是线程池中的一个线程永远无法重用再次因为它的结果没有被检索到),这会影响未来整个线程池的性能吗?谢谢。
问候, 林
【问题讨论】:
-
我的意思是线程池中的一个线程永远无法再次被重用,因为它的结果没有被检索到你能描述一下你在这里想到的行为吗?
-
这是您可以轻松测试的东西:创建一个固定的线程池,提交比线程数更多的请求,然后看看会发生什么。
-
您不提交线程,您提交
Runnable或Callable实例。结果不存储在线程中,它们存储在对象中。为什么你期望一个对象阻止线程运行? -
我是“学习测试”的忠实粉丝。如果我正在编写依赖于第三方库的代码,并且我不确定该库在某些情况下的行为方式,我会为它编写一个单元测试,就好像它是我自己的代码一样。我将单元测试保留作为项目的永久部分,因为它记录了我对库所做的假设,并且如果我切换到更新版本的库时它会提醒我不再符合我之前的预期。
-
很难想到和记录图书馆不做的所有事情。它没有设计师可能从未想过的问题。
标签: java multithreading executorservice