JAVA 线程编程 ----什么时候多线程可能不好(When Multiple Threads Might Not Be Good)...

设计程序时候创建更多的线程不总是一个好主意。线程不是免费的;它们会带来一些资源的负担。

每个Thread 对象初始化时需要使用内存资源。除了对象本身使用的内存外,JVM还会为每个线程分配两个执行调用堆栈(call stack)。一个堆栈用来跟踪Java方法的调用和局部变量。另一个堆栈用来跟踪本地代码(native code)(典型是C语言代码)的调用。

每个线程也需要处理器资源,也会给操作系统的线程调度增加负担。当某个线程的执行被挂起,离开了处理器,另一线程进入处理器,它的执行被恢复。这就是所谓的上下文切换(contex switch).CPU时钟需要用来做上下文切换,并且当有许多线程运行时,CPU时钟周期就变得相当可观了。

除此之外,还包括线程启动,停止和杀死一个线程对象。当线程用来完成一个简单的后台任务时,这个代价就需要认真考虑了。比如,设计一个email程序,它每隔5分钟来监测是否有新邮件。与其创建一个新线程每次来监测,还不如让同一个线程持续运行,然后在每次查询时,sleep 5分钟。

当设计系统时添加额外线程时,这些代价需要认真考虑。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值