`
xiebh
  • 浏览: 603806 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

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

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

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

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

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

当设计系统时添加额外线程时,这些代价需要认真考虑。





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics