在看书的时候看到了一个观察死锁的工具TDA(Thread Dump Analysis)
看了半天,才知道这玩意儿需要由jvm产生一个Thread Dump
这个Thread Dump跟之前看到的Heap Dump也不是一回事
windows下是ctrl+break触发,unix下是ctrl+\或者kill -QUIT pid触发
默认是输出到System.out,当然,你可以重定向的
还有一个简单方便快捷的方法:Java VisualVM,并且Java VisualVM中还提供了TDA的插件下载
太深入的现在还没这水平,在之前的代码调试中用了一下
之前的代码中有这样一个错误
void waitThread(Thread t) throws InterruptedException
{
synchronized(this)
{
freeThread.add((ThreadNode) t);
busyThreadsNum.decrementAndGet();
synchronized(t)
{
t.wait();
}
}
}
很明显,问题是锁住了pool的固有锁,然后等待
这是一个Java VisualVM的一个界面
只要简单地点击“线程 Dump”,就能得到一个线程Dump了,然后用TDA查看一下线程池0-9的状态
可以看到,上锁,然后等待,还有在这问题出现在哪一行,都明晰了
- 大小: 39.7 KB
- 大小: 13.6 KB
分享到:
相关推荐
Java并发编程:线程池的使用 - 平凡希 - 博客园平凡希博客园首页联系管理随笔 - 127 文章 - 1 评论 - 94Java并发编程:线程池的使用在前面
而了解 Java 并发编程以及其中的 JUC(java.util.concurrent)线程池,对于构建高性能、高可伸缩性的应用程序具有重要意义。 多核处理器的出现使得并发执行成为一种重要的优化手段。了解并发编程和线程池的工作原理...
Java 并发学习笔记: 进程和线程, 并发理论, 并发关键字, Lock 体系, 原子操作类, 发容器 & 并发工具, 线程池, 并发实践 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的...
java并发学习总结 例子:包含(并发容器、同步容器、同步工具、死锁、异常、中断、线程池、返回结果、同步方法等代码例子)
Java分布式应用学习笔记07线程池应用
Java并发编程与高并发解决方案:线程池,消息队列,服务拆分,限流,降级,熔断思路,数据库分表
23 高并发编程和线程池,教程视频:java中高并发编程和线程池
聊聊并发(3)Java线程池的分析和使用Java开发Java经验技巧共7页.pdf.zip
java并发笔记
当调用 start 启动线程时 Java 虚拟机会调 用该类的 run方法。 那么该类的 run() 方法中就是调用了 Runnable 对象的 run() 方法。 我 们可以继承重写Thread 类,在其 start 方法中添加不断循环调用传递过来的 ...
Java并发编程常见知识点源码集锦,涉及到对象锁,Executors多任务线程框架,线程池等示例,列出一些源码包中包括的内容: volatile关键字的非原子性、volatile关键字的使用、AtomicInteger原子性操作、线程安全小...
第二部分 结构化并发应用程序 第6章 任务执行 6.1 在线程中执行任务 6.1.1 串行地执行任务 6.1.2 显式地为任务创建线程 6.1.3 无限制创建线程的不足 6.2 Executor框架 6.2.1 示例:基于Executor的Web服务器 ...
阿里专家级并发编程架构师级课程,完成课程的学习可以帮助同学们解决非常多的JAVA并发编程疑难杂症,极大的提高JAVA并发编程的效率。课程内容包括了JAVA手写线程池,UC线程池API详解,线程安全根因详解,锁与原子类...
第4节学习并发的四个阶段并推荐学习并发的资料 [免费观看] 00:09:13分钟 | 第5节线程的状态以及各状态之间的转换详解00:21:56分钟 | 第6节线程的初始化,中断以及其源码讲解00:21:26分钟 | 第7节多种创建线程的...
java代码 ThreadPoolExecutor线程池并发测试例子如有误欢迎指正
《Java并发编程的艺术》内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题,每个主题都做了深入的讲解,同时...
Java并发编程的艺术 作者:方腾飞 魏鹏 程晓明 著 丛书名:Java核心技术系列 出版日期 :2015-07-25 ISBN:978-7-111-50824-3 第1章介绍Java并发编程的挑战,向读者说明进入并发编程的世界可能会遇到哪些问题,以及如何...
《Java并发编程从入门到精通》内容包括并发编程概念,线程,线程安全,线程集合类,线程阀,线程池,Fork/Join,线程、线程池在互联网项目开发的应用,线程监控及线程分析,Android中线程应用。 本书适合Java开发...
java多线程并发查询数据库,使用线程池控制分页,并发查询。
java并发编程脑图总结,线程池、主要使用场景分析,进程:是CPU分配资源的最小单元,是程序的一次动态执行,它对应着从代码加载,执行至完成的一个完整的过程,它有自己的生命周期。它是应用程序的执行实例,每个...