作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用新线程和使用线程池中的线程有什么区别?有哪些性能优势?为什么我应该考虑使用池中的线程而不是我显式创建的线程?我在这里特别考虑的是 .NET,但一般示例就可以了。
最佳答案
线程池将为频繁且相对较短的操作提供好处
如果您将 100 个线程池任务排队,它只会使用已创建的线程数来服务这些请求(例如 10 个)。线程池将进行频繁的检查(我相信在 3.5 SP1 中每 500 毫秒一次),如果有排队的任务,它将创建一个新线程。如果您的任务很快,那么新线程的数量将会很小,并且为短任务重用 10 个左右的线程将比预先创建 100 个线程更快。
如果您的工作负载始终有大量线程池请求传入,那么线程池将根据您的工作负载进行调整,通过上述过程在池中创建更多线程,以便有更多的线程可用于处理请求
检查Here有关线程池如何在后台运行的更深入的信息
如果作业运行时间相对较长(可能大约一两秒,但这取决于具体情况),自己创建一个新线程会更合适
@Krzysztof - 线程池线程是后台线程,当主线程结束时将停止。手动创建的线程默认处于前台(主线程结束后将继续运行),但可以在调用 Start 之前将其设置为后台。
关于.net - 线程与线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/230003/
我是一名优秀的程序员,十分优秀!