对于连续任务,例如渲染动画,每帧创建短期线程要比在开始时创建线程慢得多,然后暂停它们并重新开始?
或者差异可以忽略不计?
答案 0 :(得分:9)
那会慢得多;线程开销很大。
您可以使用线程池重用线程并避免开销 但是,对于这样的短期任务,可能仍然不值得使用线程,因为上下文切换的成本将超过好处。
测量它!
答案 1 :(得分:2)
创建新线程会产生很大的开销。如果线程的活动非常短,则创建开销甚至可能大于实际执行时间。您将需要尽可能多地回收线程。
我建议使用ExecutorService
。
答案 2 :(得分:0)
由于创建开销,创建新线程不是最好的方法。您应该至少使用线程池而不是创建新线程(有关详细信息,请参阅Executor)。
线程的生命周期也很重要。如果它太短,性能可能会更糟,因为上下文切换开销。
另一个重点是你拥有的CPU /核心数量。作为一般规则,如果您的任务是CPU密集型的,那么每个核心应该使用1-2个线程(我认为这是您的情况)。如果您的任务是I / O密集型的话,你可以稍微推动这个数字(让我们说3-5个theads)。