我有一个使用者线程阻止从队列中删除。 在某些时期内,我知道什么都不会添加到队列中。
我的问题是:是否值得增加管理何时启动/停止线程的复杂性,还是应该让它等待队列开始再次获取元素?
答案 0 :(得分:4)
如果您使用的并发队列实现值得,那么线程将不会很长busy-waiting。出于性能原因,某些实现可能会短暂执行此操作,但是此后它将阻塞并且不会消耗CPU周期。因此,停止线程和阻塞线程之间的差异或多或少变得毫无意义。
使用并发队列。参见Which concurrent Queue implementation should I use in Java?
答案 1 :(得分:0)
在处理多线程时,最好的做法是仅在遇到性能问题时采取行动。否则,我会把它留在原处,以避免麻烦。
答案 2 :(得分:0)
由于线程被阻塞(非活动等待),因此我认为对性能没有太大影响。如果线程持有可以在该时间释放的昂贵资源,这可能是有道理的。我会尽量简化这一过程,尤其是在并发环境中,复杂性可能导致奇怪的错误。