浏览 1431 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-13
设计程序时候创建更多的线程不总是一个好主意。线程不是免费的;它们会带来一些资源的负担。 每个Thread 对象初始化时需要使用内存资源。处理对象本身使用的内存外,JavaVM还会为每个线程分配两个执行调用堆栈(call stack)。一个堆栈用来跟踪Java方法的调用和局部变量。另一个堆栈用来跟踪本地代码(native code)(典型是C语言代码)的调用。 每个线程也需要处理器资源,也会给操作系统的线程调度增加负担。当某个线程的执行被挂起,离开了处理器,另一线程进入处理器,它的执行被恢复。这就是所谓的上下文切换(contex switch).CPU时钟需要用来做上下文切换,并且当有许多线程运行时,CPU时钟周期就变得相当可观了。 除此之外,还包括线程启动,停止和杀死一个线程对象。当线程用来完成一个简单的后台任务时,这个代价就需要认真考虑了。比如,设计一个email程序,它每隔5分钟来监测是否有新邮件。与其创建一个新线程每次来监测,还不如让同一个线程持续运行,然后在每次查询时,sleep 5分钟。 当设计系统时添加额外线程时,这些代价需要认真考虑。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |