`
xiebh
  • 浏览: 613878 次
  • 性别: 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分钟。

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





分享到:
评论

相关推荐

    linux实用脚本show-busy-java-threads

    在多线程环境中,如果某个线程长时间处于忙碌状态,可能会导致性能问题或者阻塞其他线程。通过运行这个脚本,我们可以获取到线程堆栈信息,分析哪些线程正在执行关键操作,或者是否存在死锁现象。这对于优化Java应用...

    show-busy-java-threads.sh文件

    在Java应用程序的运行过程中,有时候会遇到CPU使用率异常升高的情况,这可能是由于线程的不恰当使用或者死锁等问题导致的。`show-busy-java-threads.sh`脚本就是为了帮助开发者快速定位和排查这类性能问题而设计的。...

    Programming with POSIX Threads(多线程编程PDF版本)

    多线程编程是计算机科学中的一个重要概念,它允许在单一程序内部同时运行多个执行路径,也就是说,在同一时刻,程序的不同部分可以并行执行。多线程编程的关键优势在于它能够提升程序的效率和响应能力,这对于服务器...

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关...第五章 Java线程编程的例子 第六章 Java线程调度 第七章 Java线程调度例子 第八章 和同步相关的高级主题 第九章 多处理器机器上的并行化 第十章 线程组

    Java多线程编程线程的协同、停止、暂停、继续等操作实现

    本篇文章将深入探讨如何实现线程的协同、停止、暂停以及继续等操作,这些都是多线程编程中的核心概念。 1. **线程的协同(协作式线程调度)** 在Java中,线程的协同主要通过`wait()`和`notify()`或`notifyAll()`...

    java 课件 ppt

    英文课件,中文备注,是多分优秀课件的结晶,对重点难点给予实例讲解和动态讲解。 课件分为两部分,第一部分为java基础,第二部分为java高级...Threads--线程 Networking--网络编程 GUI programming overview--GUI编程

    【个人总结系列-27】Python网络编程与多线程编程-学习总结 (2).docx

    Python网络编程和多线程编程是开发高效网络应用的关键技术。在Python中,网络编程主要依赖于socket库,它提供了一种低级别的接口用于进程间通信。本文将深入探讨TCP和UDP两种网络通信协议在Python中的实现,以及...

    Java线程编程学习笔记(二)

    这篇“Java线程编程学习笔记(二)”很可能是对Java并发编程深入探讨的一部分,特别是涉及多线程示例的实践应用。我们将从标题、描述以及标签来推测可能涵盖的知识点,并结合"Multi-Threads Demo"这一压缩包文件名来...

    Programming with POSIX Threads 多线程编程[pdf]

    多线程编程是一种在计算机科学中广泛使用的技术,允许在一个程序内创建多个线程,这些线程可以并行或并发执行,提高程序的执行效率和响应速度。POSIX线程(通常称为pthreads)是一种在UNIX和UNIX-like系统中应用的多...

    APress-Taming-Java-Threads-Code.rar_taming java threads_threads

    《驯服Java线程》是Apress出版的一本关于Java多线程编程的书籍,它深入探讨了如何在Java环境中有效地管理和控制线程,以优化程序性能和稳定性。线程在现代软件开发中扮演着至关重要的角色,尤其是在并发处理和高并发...

    (中英文)-POSIX多线程程序设计-Programming with POSIX Threads

    本书深入浅出地介绍了POSIX线程(也称为pthreads)API,是理解并掌握多线程编程的重要参考资料。在本文中,我们将探讨POSIX线程的基本概念、API用法以及在实际开发中的应用。 1. **POSIX线程基础** - POSIX线程,...

    linux多线程编程.pdf

    Linux多线程编程是现代操作系统编程的重要组成部分,尤其是在Linux环境下,多线程编程更是成为了高性能应用不可或缺的技术之一。本文档主要涉及Linux多线程编程的一些关键知识点,包括pthread线程库的使用、线程的...

    show-busy-java-threads.sh

    java线程定位脚本

    多线程编程中英文对照.rar

    在IT领域,多线程编程是一项关键技能,尤其是在操作系统如Symbian中。多线程技术允许程序同时执行多个任务,提升系统效率和用户体验。以下是对"多线程编程"这个主题的详细解释: 1. **多线程概念**:多线程是指一个...

    多线程编程 UNIX LINUX Programming with POSIX Threads

    我也是如此. 显然,这是一本相当重要的书,当你在学习UNIX/LINUX下的多线程编程的时候. <br>我把在国外网站找到的这本书打做成PDF格式.希望对大家有帮助. 文件太大,分成了四部分,请下载完整. <br>多线程...

    illy-Java.Threads.2nd.Edition

    《Java Threads 第二版》是一本关于Java线程编程的经典著作,由Scott Oaks与Henry Wong合著,出版于1999年1月。本书是针对Java 2平台进行修订和扩展的版本,全面覆盖了Java线程相关的各种概念和技术,旨在帮助读者...

    Java-multi-threads-programming.rar_java programming

    Java多线程编程是Java编程领域中的一个重要主题,它允许程序同时执行多个任务,从而提高应用程序的效率和响应性。在Java中,多线程可以实现并发操作,这对于处理大量数据、实现用户界面的实时反馈或者进行计算密集型...

    玩转多线程编程

    ### 玩转多线程编程 #### 前言 本文旨在深入探讨多线程编程的核心概念和技术细节,特别适合那些已经具备一定多线程编程基础并希望进一步提升技能的开发者。文中不仅覆盖了线程相关的基础知识,还介绍了高级技巧,...

Global site tag (gtag.js) - Google Analytics