- 浏览: 94689 次
- 性别:
- 来自: 深圳
文章分类
最新评论
接下来网上没有,貌似非公开章节,继续摘要。
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 718Kafka深度解析 分库分表系列文章 来自 ... -
<<More Joel on Software>> 如何扮演程序经理的角色
2011-07-03 15:13 797制作伟大软体的秘方之 ... -
<<More Joel on Software>> 利诱管理法
2011-07-03 15:10 959利诱管理法 Joke: A poor J ... -
<<More Joel on Software>> The Joel Test: 软件开发成功 12 法则
2011-07-03 14:42 690作者: 周思博 (Joel Spols ... -
<<More Joel on Software>> 看起来简单, 实际上复杂
2011-07-03 14:41 761作者: 周思博 (Joel Spolsky) 译: Bo Y ... -
<<More Joel on Software>> 膨胀软件与80/20的谣传
2011-07-03 14:38 885作者: 周思博 (Joel Spols ... -
<<More Joel on Software>> 每日构建(daily build)是你的朋友
2011-07-03 14:37 852作者: 周思博 (Joel Spols ... -
<<More Joel on Software>> 五个为什么
2011-07-03 14:20 957五个为什么(译文) ... -
<<More Joel on Software>> 飙高音
2011-07-03 13:54 906飙高音(译文) 作者: 阮一峰 日期: 2009年 ... -
<<More Joel on Software>> 关于战略问题的通信之六
2011-07-03 13:51 770关于战略问题的通信之六(译文) 作者: 阮一峰 日 ... -
<<More Joel on Software>> 易用性是不够的
2011-07-03 13:41 739易用性是不够的(译文) 作者: 阮一峰 日期: 2 ... -
<<More Joel on Software>> 军事化管理法
2011-07-03 13:28 963高科技公司能否采用军事化管理?(译文) 作者: 阮一峰 ... -
<<More Joel on Software>> 寻找优秀的程序员
2011-07-03 13:24 1197=================== 寻找 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第七章 构建可伸缩的系统
2011-05-29 12:09 1106通常将通过升级或增加单机机器的硬件来支撑访问量及数据量增长的方 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第六章 构建高可用的系统
2011-05-28 11:02 1200对于互联网或企业中的大型应用而言,多数要求做到 7*24 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第五章 性能调优(二)
2011-05-22 21:34 10905.2 调优 找出性 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第五章 性能调优(一)
2011-05-22 13:43 11355.1 寻找性能瓶颈 通常性能瓶颈的 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第四章 分布式JAVA应用与JDK类库
2011-05-21 11:23 11784.1 集合包 ArrayList, Li ... -
《分布式JAVA应用 基础与实践》 第三章 3.3 JVM线程资源同步及交互机制(一)
2011-05-17 19:09 8903.3 JVM线程资源同步及交互机制 Java程序采用 ... -
《分布式JAVA应用 基础与实践》 第三章 3.2 JVM内存管理(四)
2011-05-17 19:00 9253.2.4 JVM内存状况查看 ...
相关推荐
Java分布式应用学习笔记03JVM对线程的资源同步和交互机制
Java分布式应用学习笔记02再谈JVM
第一章:jvm、第二章:java集合、第三章:java多线程并发、第四章:java基础、第五章:Spring原理、第六章:微服务、第七章:Netty 与 RPC、第八章:网络、第九章:日志、第十章:Zookeeper、第十一章:Kafka、第十...
java 查看JVM中所有的线程的活动状况 java 查看JVM中所有的线程的活动状况
Java分布式应用学习笔记-谈JVM
第3章 安全 3.1 为什么需要安全性 3.2 基本沙箱 3.3 类装载器体系结构 3.4 class文件检验器 3.4.1 第一趟:class文件的结构检查 3.4.2 第二趟:类型数据的语义检查 3.4.3 第三趟:字节码验证 ...
Java 虚拟机学习笔记: Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...
包含了JVM、Redis、Zookeeper、RabbitMQ等核心知识总结,帮你快速掌握分布式技术
常见面试题 :分布式+微服务+MYSQL+Redis+JVM+Spring等等(MD文档格式)
本书章节包括分布式java应用,大型分布式java应用与SOA,深入理解jvm,分布式应用与sun jdk类库,性能调优,构件高可用的系统等,同时也适合面试考察的知识点。
JVM负责装载class文件并执行,因此,首先是JDK如何将Java代码编译为class文件、如何...JVM提供了多线程支持,对于分布式Java应用而言,通常要借助线程来实现高并发,JVM中线程资源如何同步的机制及线程之间交互的机制。
详细介绍java并发编程相关知识: 基础知识 并发与并行 Java并发演进历史 Java并发模型 线程模型 存储模型 JVM同步原语 volatile CAS 线程安全 保护“共享数据” 低级并发工具 原子变量 锁...
Java后端核心知识总结:Java基础 Java后端核心知识总结:分布式核心知识总结 Java核心知识总结:Spring Cloud Java核心知识总结:Spring Cloud Alibaba Java后端核心知识总结:计算机网络 Java后端核心知识总结:...
/ 327 12.3.5 原子性、可见性与有序性 / 328 12.3.6 先行发生原则 / 330 12.4 Java与线程 / 333 12.4.1 线程的实现 / 333 12.4.2 Java线程调度 / 337 12.4.3 状态转换 / 339 12.5 本章小结 / 341 第13章 ...
真正的Addison-Wesley 出品的Java Concurrency in Practice 中文版 目录回到顶部↑ 代码清单 序 第1章 介绍 ...第15章 原子变量与非阻塞同步机制 第16章 java存储模型 附录a 同步annotation 参考文献 索引
分布式移动开发总结:对Java来说,这些子系统可能部署在同一台机器的多个不同的JVM中,也可能部署在不同的机器上, 但这些子系统又不是完全独立的,要相互通信来共同实现业务功能。
JAVA应用JVM原理及参数调优深入讲解视频.3 JAVA应用JVM原理及参数调优深入讲解视频.4 JAVA应用JVM原理及参数调优深入讲解视频.5 JAVA应用JVM原理及参数调优深入讲解视频.6 JAVA应用JVM原理及参数调优深入讲解视频.7 ...
java 核心知识 包含 JVM 线程 集合 数据库 算法 负载等一系列知识点 知识点很全
Java主流分布式解决方案多场景设计与实战,2023年最新课程,全套资料下载。 Tomcat+Mysql+设计模式+并发编程+JVM+Netty开源框架(SSM框架):Spring+SpringMVC+Mybatis微服务架构:Dubbo、SpringBoot、SprinGCloud...