我正在尝试优化我们正在开发的应用程序的代码。当前实现invovles创建一个线程来连续轮询服务器以获取新数据。 如果找到新数据,则该线程会生成多个线程(每次创建)以检索数据。
我正在阅读有关thread pooling的内容,并且很好奇,更改代码以利用线程池会产生明显的差异。
答案 0 :(得分:6)
如果你创建了一个长时间运行的线程来进行轮询,你就不会发现太大的区别。诚然,你现在可能已经睡了,所以你在很多时候都需要多一个线程(与基于计时器的解决方案相比),但它基本没问题。
当您有大量短期操作时,线程池特别好。启动一个线程并不是免费的,如果实际的工作很简单,那么开销就会很大。线程池只是让实际的线程挂起,等待工作项。然后,他们可以用很少的开销执行这些工作项。
使用单个长时间运行的任务,与任务本身所花费的时间相比,开销是微不足道的,因此您不会注意到任何差异。