- 浏览: 98467 次
- 性别:
- 来自: 深圳
文章分类
最新评论
接下来网上没有,貌似非公开章节,继续摘要。
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。
发表评论
-
技术文章精华合集(持续更新中)
2016-09-20 19:09 804Kafka深度解析 分库分表系列文章 来自 ... -
<<More Joel on Software>> 如何扮演程序经理的角色
2011-07-03 15:13 834制作伟大软体的秘方之 ... -
<<More Joel on Software>> 利诱管理法
2011-07-03 15:10 1005利诱管理法 Joke: A poor J ... -
<<More Joel on Software>> The Joel Test: 软件开发成功 12 法则
2011-07-03 14:42 734作者: 周思博 (Joel Spols ... -
<<More Joel on Software>> 看起来简单, 实际上复杂
2011-07-03 14:41 792作者: 周思博 (Joel Spolsky) 译: Bo Y ... -
<<More Joel on Software>> 膨胀软件与80/20的谣传
2011-07-03 14:38 918作者: 周思博 (Joel Spols ... -
<<More Joel on Software>> 每日构建(daily build)是你的朋友
2011-07-03 14:37 903作者: 周思博 (Joel Spols ... -
<<More Joel on Software>> 五个为什么
2011-07-03 14:20 985五个为什么(译文) ... -
<<More Joel on Software>> 飙高音
2011-07-03 13:54 948飙高音(译文) 作者: 阮一峰 日期: 2009年 ... -
<<More Joel on Software>> 关于战略问题的通信之六
2011-07-03 13:51 801关于战略问题的通信之六(译文) 作者: 阮一峰 日 ... -
<<More Joel on Software>> 易用性是不够的
2011-07-03 13:41 779易用性是不够的(译文) 作者: 阮一峰 日期: 2 ... -
<<More Joel on Software>> 军事化管理法
2011-07-03 13:28 1018高科技公司能否采用军事化管理?(译文) 作者: 阮一峰 ... -
<<More Joel on Software>> 寻找优秀的程序员
2011-07-03 13:24 1239=================== 寻找 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第七章 构建可伸缩的系统
2011-05-29 12:09 1147通常将通过升级或增加单机机器的硬件来支撑访问量及数据量增长的方 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第六章 构建高可用的系统
2011-05-28 11:02 1249对于互联网或企业中的大型应用而言,多数要求做到 7*24 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第五章 性能调优(二)
2011-05-22 21:34 11255.2 调优 找出性 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第五章 性能调优(一)
2011-05-22 13:43 11655.1 寻找性能瓶颈 通常性能瓶颈的 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第四章 分布式JAVA应用与JDK类库
2011-05-21 11:23 12154.1 集合包 ArrayList, Li ... -
《分布式JAVA应用 基础与实践》 第三章 3.3 JVM线程资源同步及交互机制(一)
2011-05-17 19:09 9253.3 JVM线程资源同步及交互机制 Java程序采用 ... -
《分布式JAVA应用 基础与实践》 第三章 3.2 JVM内存管理(四)
2011-05-17 19:00 9543.2.4 JVM内存状况查看 ...
相关推荐
### Java分布式应用学习笔记03:JVM对线程的资源同步和交互机制 在深入探讨Java虚拟机(JVM)如何处理线程间的资源同步与交互机制之前,我们先来明确几个关键概念:线程、多线程、同步、并发以及它们在Java中的实现...
【Java分布式应用学习笔记-谈JVM】 在Java分布式应用中,JVM(Java虚拟机)扮演着至关重要的角色。虽然有些人可能认为分布式系统与JVM的关系并不密切,但事实上,尤其是在大型分布式环境,如云计算服务平台,对Java...
这份笔记由毕向东老师授课,涵盖了Java的基础知识及进阶主题,具体章节包括编程基础、数组、面向对象程序设计等多个方面。接下来,我们将详细探讨每一章的主要内容。 ### 第一章:编程基础 #### 1. Java的特性和...
- **JDBC**:Java数据库连接,用于Java应用程序与数据库交互的标准接口。 ##### 第二阶段:网页网站技术 - **XML**:可扩展标记语言,用于数据存储和交换。 - **JS (JavaScript)**:一种脚本语言,用于网页动态效果...
Java本地接口(JNI)允许Java代码调用C/C++代码,实现Java与本地代码的交互,提升性能。 【JavaFX与Swing】 JavaFX和Swing是Java的图形用户界面(GUI)工具包,用于构建桌面应用程序。JavaFX提供了更现代的UI组件...
### Java私塾基础入门笔记概览 #### 一、Java简介与版本 Java是一种功能强大的计算机编程语言,它不仅是一种软件开发平台,还是一种软件运行平台(Java Runtime Environment,简称JRE),支持软件的部署。Java的...
### 传智播客Java SE基础毕向东老师全程笔记知识点概览 #### 第一章:编程基础 **Java的特性和优势:** - **简单性:** Java的设计初衷是为了简化编程,减少编码负担。 - **面向对象:** Java是完全面向对象的语言...
### Java基础笔记知识点详解 #### 一、Java概述与历史 - **编程语言的发展历程**: - **第一代:机器语言**:直接通过二进制指令与计算机交互,无须任何转换。 - **第二代:汇编语言**:比机器语言更接近人类的...
- **JavaSE (Standard Edition):** Java标准版,适用于桌面应用程序开发,涵盖了Java的基本功能,如语言基础、JDBC操作、I/O处理、网络通信及多线程技术。 - **JavaEE (Enterprise Edition):** Java企业版,用于构建...
- **多线程**:Java内置了对多线程的支持,便于开发高并发应用。 - **安全性**:Java提供了一套强大的安全模型,能够有效防止恶意代码的入侵。 - **健壮性**:通过严格的编译检查和运行时异常处理机制,确保程序...
这份资源旨在帮助Java开发者深入理解语言特性和应用实践,提升技能水平。 首先,从【Java基础】部分开始,我们可以看到包括“面向对象”、“数组”和“方法”的主题。面向对象是Java的核心概念,涉及类、对象、封装...
Java是一种广泛使用的面向对象的...这份"java 学习笔记大全"应该覆盖了以上所有知识点,通过学习和实践,你可以掌握Java编程的核心技能,无论是进行简单的控制台程序开发,还是复杂的分布式系统设计,都将游刃有余。
### Core Java 重点要点笔记解析 #### 一、Java编程语言的发展历史与主要特性 - **起源**: Java 最初源自 Sun 公司的一个名为 Green 的项目,该项目旨在为家用消费电子产品开发一个分布式代码系统。最初考虑使用 ...
### Java学习笔记知识点详解 #### 一、Java平台概述 - **J2SE (Java Platform Standard Edition)**: 标准版Java开发平台,主要用于桌面应用软件的开发。 - **J2EE (Java Platform Enterprise Edition)**: 企业版...
Java内置对多线程的支持,可以方便地创建和管理多个并发执行的线程,提供了线程同步和通信机制,如synchronized关键字和wait/notify机制,保证了多线程环境下的数据一致性。 6. **分布式计算支持**: Java提供了...
Java的设计目标包括了简单性、安全可靠性、面向对象、分布式计算、平台无关性、多线程和动态性。这些特性使得Java在电子商务、金融、证券等多个行业中广泛应用,例如通过J2SE(Java2 Standard Edition)、J2EE(Java...
10. **JDBC数据库连接**:Java Database Connectivity(JDBC)是Java与各种数据库进行交互的标准API。通过DriverManager、Connection、Statement和ResultSet等接口,开发者可以执行SQL语句并获取结果。 11. **Java ...
- **多线程**:Java内置对多线程的支持,包括线程的创建、同步、互斥等机制。 - **Swing与AWT**:Java的图形用户界面(GUI)开发库,用于创建桌面应用程序。 3. **JavaEE(企业版)** - **Servlet与JSP**:在...