`

读书笔记:《分布式JAVA应用 基础与实践》 第三章 3.3 JVM线程资源同步及交互机制(二)

阅读更多

接下来网上没有,貌似非公开章节,继续摘要。

 

3.3.2 线程交互机制

1. 常规方法:wait/notify/notifyAll

当线程调用了对象的wait方法后,JVM线程执行引擎会将此线程放入一个wait sets中,并释放此对象的锁,在wait sets中的线程将不会被JVM线程执行引擎调度执行;当其它线程调用了此对象的notify方法时,会从wait sets中随机找一个等待在此对象的线程唤醒。

 

2. SUN JDK5.0后,增加了并发包,提供了更多的方式来支持线程间的交互。例如Semphore的acquire和release,Condition的await和signal,CountDownLatch的await和countDown等。

 

3.3.3 线程状态及分析

为跟踪运行时JVM线程的状况,JDK及开源界提供了一些不错的工具,以帮助判断什么操作耗费资源,什么操作导致锁竞争激烈或死锁现象。

1. kill -3 [pid]   

    输出线程信息至Console

2. jstack

    jdk/bin目录下,也是查看线程信息

3. JConsole

    同样位于jdk/bin目录下,可用于图形化跟踪查看运行时系统中线程的状况(运行状态、锁等待、堆栈、检测死锁等)

4. TDA

    开源界一个不错的用于分析线程堆栈信息的图形化工具,通过此工具可以比较方便地分析线程堆栈中等待锁的线程、各种状态的线程及运行时间较长的线程等

5. TOP命令 + ThreadDump

      通过以上几种方式都可以dump出JVM中的线程信息,而结合linux中的TOP命令,可以更轻松地分析目前线程消耗CPU的状况,包括消耗CPU总时间及实时CPU消耗率比较,方法如下:

      在linux上输入TOP,在进入TOP后按[shift]+[H]组合键,再按线程的方式查看线程ID、CPU的消耗状况等。通过这种方式获取耗CPU的线程后,结合ThreadDump信息具体查看消耗CPU的线程在做的动作。这里要注意的是,TOP中显示的是十进制的线程ID,而ThreadDump中的nid(即Native ID)对应的十六进制,因此在查找时需要先做次转换。

 

     除了上面提及的这些工具外,在业界还有不少商业的可用于分析JAVA程序线程状况的工具,如JProfiler。

 

 

分享到:
评论

相关推荐

    Java分布式应用学习笔记03JVM对线程的资源同步和交互机制

    ### Java分布式应用学习笔记03:JVM对线程的资源同步和交互机制 在深入探讨Java虚拟机(JVM)如何处理线程间的资源同步与交互机制之前,我们先来明确几个关键概念:线程、多线程、同步、并发以及它们在Java中的实现...

    Java分布式应用学习笔记-谈JVM.doc

    【Java分布式应用学习笔记-谈JVM】 在Java分布式应用中,JVM(Java虚拟机)扮演着至关重要的角色。虽然有些人可能认为分布式系统与JVM的关系并不密切,但事实上,尤其是在大型分布式环境,如云计算服务平台,对Java...

    Java_se基础毕向东老师全程笔记

    这份笔记由毕向东老师授课,涵盖了Java的基础知识及进阶主题,具体章节包括编程基础、数组、面向对象程序设计等多个方面。接下来,我们将详细探讨每一章的主要内容。 ### 第一章:编程基础 #### 1. Java的特性和...

    java基础学习笔记

    - **JDBC**:Java数据库连接,用于Java应用程序与数据库交互的标准接口。 ##### 第二阶段:网页网站技术 - **XML**:可扩展标记语言,用于数据存储和交换。 - **JS (JavaScript)**:一种脚本语言,用于网页动态效果...

    黑马java教程知识点笔记整理

    Java本地接口(JNI)允许Java代码调用C/C++代码,实现Java与本地代码的交互,提升性能。 【JavaFX与Swing】 JavaFX和Swing是Java的图形用户界面(GUI)工具包,用于构建桌面应用程序。JavaFX提供了更现代的UI组件...

    java私塾基础入门笔记

    ### Java私塾基础入门笔记概览 #### 一、Java简介与版本 Java是一种功能强大的计算机编程语言,它不仅是一种软件开发平台,还是一种软件运行平台(Java Runtime Environment,简称JRE),支持软件的部署。Java的...

    传智播客Java SE基础毕向东老师全程笔记

    ### 传智播客Java SE基础毕向东老师全程笔记知识点概览 #### 第一章:编程基础 **Java的特性和优势:** - **简单性:** Java的设计初衷是为了简化编程,减少编码负担。 - **面向对象:** Java是完全面向对象的语言...

    Java基础笔记MarkDown版4万字肝吐血

    ### Java基础笔记知识点详解 #### 一、Java概述与历史 - **编程语言的发展历程**: - **第一代:机器语言**:直接通过二进制指令与计算机交互,无须任何转换。 - **第二代:汇编语言**:比机器语言更接近人类的...

    Java课程笔记

    - **JavaSE (Standard Edition):** Java标准版,适用于桌面应用程序开发,涵盖了Java的基本功能,如语言基础、JDBC操作、I/O处理、网络通信及多线程技术。 - **JavaEE (Enterprise Edition):** Java企业版,用于构建...

    毕向东_Java基础课堂笔记.pdf

    - **多线程**:Java内置了对多线程的支持,便于开发高并发应用。 - **安全性**:Java提供了一套强大的安全模型,能够有效防止恶意代码的入侵。 - **健壮性**:通过严格的编译检查和运行时异常处理机制,确保程序...

    狂神说java系列笔记(java基础+javaweb+ssm+微服务).rar

    这份资源旨在帮助Java开发者深入理解语言特性和应用实践,提升技能水平。 首先,从【Java基础】部分开始,我们可以看到包括“面向对象”、“数组”和“方法”的主题。面向对象是Java的核心概念,涉及类、对象、封装...

    java 学习笔记大全

    Java是一种广泛使用的面向对象的...这份"java 学习笔记大全"应该覆盖了以上所有知识点,通过学习和实践,你可以掌握Java编程的核心技能,无论是进行简单的控制台程序开发,还是复杂的分布式系统设计,都将游刃有余。

    CoreJava重点要点笔记

    ### Core Java 重点要点笔记解析 #### 一、Java编程语言的发展历史与主要特性 - **起源**: Java 最初源自 Sun 公司的一个名为 Green 的项目,该项目旨在为家用消费电子产品开发一个分布式代码系统。最初考虑使用 ...

    java学习笔记

    ### Java学习笔记知识点详解 #### 一、Java平台概述 - **J2SE (Java Platform Standard Edition)**: 标准版Java开发平台,主要用于桌面应用软件的开发。 - **J2EE (Java Platform Enterprise Edition)**: 企业版...

    java面试进阶解析笔记

    Java内置对多线程的支持,可以方便地创建和管理多个并发执行的线程,提供了线程同步和通信机制,如synchronized关键字和wait/notify机制,保证了多线程环境下的数据一致性。 6. **分布式计算支持**: Java提供了...

    Java笔记-基础部分

    Java的设计目标包括了简单性、安全可靠性、面向对象、分布式计算、平台无关性、多线程和动态性。这些特性使得Java在电子商务、金融、证券等多个行业中广泛应用,例如通过J2SE(Java2 Standard Edition)、J2EE(Java...

    java笔记.rar

    10. **JDBC数据库连接**:Java Database Connectivity(JDBC)是Java与各种数据库进行交互的标准API。通过DriverManager、Connection、Statement和ResultSet等接口,开发者可以执行SQL语句并获取结果。 11. **Java ...

    《java学习》-Java 学习笔记.zip

    - **多线程**:Java内置对多线程的支持,包括线程的创建、同步、互斥等机制。 - **Swing与AWT**:Java的图形用户界面(GUI)开发库,用于创建桌面应用程序。 3. **JavaEE(企业版)** - **Servlet与JSP**:在...

Global site tag (gtag.js) - Google Analytics