为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪9158850 2019-08-03 07:03:28
为什么说创建一个线程是昂贵的?Java教程说创建线程非常昂贵。但是为什么它很贵呢?当创建Java线程时,会发生什么,从而使其创建成本更高?我认为这句话是真的,但我只对JVM中线程创建的机制感兴趣。线程生命周期开销。线程创建和删除并不是免费的。实际开销因平台而异,但线程创建需要时间,将延迟引入到请求处理中,并且需要JVM和OS进行一些处理活动。如果请求频繁且轻量级,就像在大多数服务器应用程序中一样,为每个请求创建一个新线程可能会消耗大量的计算资源。从…Java并发在实践中的应用作者:Brian Goetz,Tim Peierls,乔舒亚·布洛赫,约瑟夫·鲍比尔,大卫·霍姆斯,道格·利亚印刷ISBN-10:0-321-34960-1
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

理论上,这取决于JVM。在实践中,每个线程都有相对较大的堆栈内存(我认为,默认情况下为256 KB)。此外,线程被实现为OS线程,因此创建它们需要一个OS调用,即上下文切换。

一定要意识到,计算中的“昂贵”总是非常相关的。与大多数对象的创建相比,线程创建非常昂贵,但相对于随机硬盘查找而言,并不是非常昂贵。您不必不惜一切代价避免创建线程,但是每秒创建数百个线程并不是一个明智的举动。在大多数情况下,如果您的设计需要大量线程,则应该使用有限大小的线程池。





查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 321 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信