文档章节

java并发学之二

apsaras
 apsaras
发布于 2016/06/20 09:41
字数 277
阅读 4
收藏 0

在看书的时候看到了一个观察死锁的工具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的插件下载 

太深入的现在还没这水平,在之前的代码调试中用了一下 
之前的代码中有这样一个错误 

Java代码   收藏代码
  1. void waitThread(Thread t) throws InterruptedException  
  2.     {  
  3.         synchronized(this)  
  4.         {         
  5.             freeThread.add((ThreadNode) t);  
  6.             busyThreadsNum.decrementAndGet();  
  7.             synchronized(t)  
  8.             {  
  9.                 t.wait();                     
  10.             }  
  11.         }  
  12.     }  

很明显,问题是锁住了pool的固有锁,然后等待 
这是一个Java VisualVM的一个界面 
 
只要简单地点击“线程 Dump”,就能得到一个线程Dump了,然后用TDA查看一下线程池0-9的状态 

 

可以看到,上锁,然后等待,还有在这问题出现在哪一行,都明晰了 

本文转载自:http://jportal.iteye.com/blog/996562

apsaras
粉丝 8
博文 90
码字总数 0
作品 0
海淀
架构师
私信 提问
GitHub 上可供新手阅读和玩耍的 Java 项目有哪些?

1.JavaGuide star:62.4k Java学习+面试指南。涵盖了Java语言、操作系统、数据结果与算法、数据库、系统设计等大部分Java程序员所需要掌握的核心知识。 2.算法-Java star:19.8k 适合用Java编...

九章算法
11/26
0
0
牛逼哄哄的Dubbo框架,底层到底是什么原理?

搞了N年Java,仍有不少朋友困惑:用了很多年Dubbo,觉得自己挺厉害,跳槽面试时一问RPC,一问底层通讯,一问NIO和AIO,就一脸懵逼,到底该怎么办? (大家有没有这样的感触?Dubbo用得很熟,...

Java猫
03/27
0
0
Java并发编程面试必备的知识点!

相信不用我说,大家也都知道掌握并发编程对于一个 Java 程序员的重要性。但相对于其他 Java 基础知识点来说,并发编程更加抽象,涉及到的知识点很多很零散,实际使用也更加麻烦。以至于很多人...

架构师技术联盟
03/05
0
0
「原创」Java并发编程系列01 开篇获奖感言

  全网都是复制粘贴的文章,师长这里一直坚持输出原创   点击上方“java进阶架构师”,选择右上角“置顶公众号   不要错过每一天的原创!      为什么要学并发编程   我曾听一个...

java进阶架构师
09/28
0
0
从Java小白到架构师必须要看的书籍,真正的“武林秘籍”!

少年,我看你骨骼精奇,将是未来万中无一的IT精英,很是适合学JAVA。维护世界和平就看你的了,我这里有能让你成为IT精英的办法!还不来看看! 基础类 1、《Thinking in Java》,入门第一位是...

启示录是真的
2018/05/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java注解合并,注解继承

spring中有时候一个类上面标记很多注解。 实际上Java注解可以进行继承(也就是把多个注解合并成1个) 比如说SpringMVC的注解 @RestController@RequestMapping("/person") 可以合并为一个 @P...

物种起源-达尔文
24分钟前
4
0
撤消Git中一个文件的工作副本修改?

在最后一次提交之后,我修改了工作副本中的一堆文件,但是我想撤消对这些文件之一的更改,例如将其重置为与最新提交相同的状态。 但是,我只想撤消仅一个文件的工作副本更改,而没有其他操作...

技术盛宴
59分钟前
4
0
Qt编写气体安全管理系统28-模拟工具

一、前言 模拟工具在一些涉及到硬件通信的程序中特别有用,也特别需要,回顾这十年来做过的项目,95%的项目都是软硬件交互的,貌似软硬件结合的项目更有生命力一些,纯软件的或者纯硬件的,并...

飞扬青云
今天
4
0
关于生活方式

生活就是生活,但难免和工作混在一起,所以要建立自己的生活方式,把工作稍微隔开点。 首先呢,每周放假的两天肯定会: 洗衣服,收拾屋子,列计划是必须要做的事情。 (这里可能还包含一些处...

T型人才追梦者
今天
6
0
JVM

一、JVM一些基本概念 1、JVM和普通虚拟机 JVM:Java Virtual Machine,程序自己独立的运行环境;堆栈、寄存器、字节码指令;可以运行多种语言:Java、Scala、Grovvy; 普通虚拟机:能完整提供...

请把小熊还给我_m
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部