为什么说创建一个线程是昂贵的?

为什么说创建一个线程是昂贵的?

Java教程说创建线程非常昂贵。但是为什么它很贵呢?当创建Java线程时,会发生什么,从而使其创建成本更高?我认为这句话是真的,但我只对JVM中线程创建的机制感兴趣。

线程生命周期开销。线程创建和删除并不是免费的。实际开销因平台而异,但线程创建需要时间,将延迟引入到请求处理中,并且需要JVM和OS进行一些处理活动。如果请求频繁且轻量级,就像在大多数服务器应用程序中一样,为每个请求创建一个新线程可能会消耗大量的计算资源。

从…Java并发在实践中的应用
作者:Brian Goetz,Tim Peierls,乔舒亚·布洛赫,约瑟夫·鲍比尔,大卫·霍姆斯,道格·利亚
印刷ISBN-10:0-321-34960-1



慕田峪9158850
浏览 322回答 3
3回答

千巷猫影

理论上,这取决于JVM。在实践中,每个线程都有相对较大的堆栈内存(我认为,默认情况下为256 KB)。此外,线程被实现为OS线程,因此创建它们需要一个OS调用,即上下文切换。一定要意识到,计算中的“昂贵”总是非常相关的。与大多数对象的创建相比,线程创建非常昂贵,但相对于随机硬盘查找而言,并不是非常昂贵。您不必不惜一切代价避免创建线程,但是每秒创建数百个线程并不是一个明智的举动。在大多数情况下,如果您的设计需要大量线程,则应该使用有限大小的线程池。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java