您的位置:首页 > 编程语言 > Java开发

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

2012-07-16 15:23 246 查看
设计程序时候创建更多的线程不总是一个好主意。线程不是免费的;它们会带来一些资源的负担。

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

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

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

当设计系统时添加额外线程时,这些代价需要认真考虑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐