对于连续的任务,例如渲染动画,每一帧创建短暂的线程会比在开始时创建线程然后暂停和恢复慢得多吗?
或者差异可以忽略不计?
发布于 2011-12-11 16:06:31
这会慢很多;线程有很大的开销。
您可以使用线程池来重用线程并避免开销。
然而,对于这种短暂的任务,使用线程可能仍然是不值得的,因为上下文切换的成本将超过收益。
测量它!
发布于 2011-12-11 16:07:27
创建一个新线程会有很大的开销。如果线程的活动非常短,则创建开销甚至可能大于实际执行时间。您将需要尽可能多地回收线程。
我推荐使用ExecutorService
。
发布于 2011-12-11 16:21:07
由于创建开销,创建新线程不是最好的方法。您至少应该使用线程池,而不是创建新线程(有关详细信息,请参阅Executor )。
此外,线程的生命周期也很重要。如果它太短,性能可能会更差,因为上下文切换开销。
另一个要点是您拥有的CPU/核心的数量。一般来说,如果你的任务是CPU密集型的,你应该在每个核心上使用1-2个线程(我假设这是你的情况)。如果你的任务是I/O密集型的,你可以稍微增加这个数字(比如说3-5个theads)。
https://stackoverflow.com/questions/8465358
复制