今天见到一个非常棒的小工具。
Jconsole
工具在JDK的bin中
先上段程序死循环掉的代码。
package thread;
import java.util.HashMap;
public class TestLock {
private final HashMap map = new HashMap();
public TestLock() {
final Thread t1 = new Thread() {
@Override
public void run() {
for(int i=0; i<500000; i++) {
map.put(new Integer(i), i);
}
System.out.println("t1 over");
}
};
final Thread t2 = new Thread() {
@Override
public void run() {
for(int i=0; i<500000; i++) {
map.put(new Integer(i), i);
}
System.out.println("t2 over");
}
};
t1.start();
t2.start();
}
public static void main(final String[] args) {
new TestLock();
}
}
运行这个程序后,然后运行Jconsole
连接到这个线程上(也就是刚刚那个程序)
单击线程后。找到我们程序的那个线程
然后就看到程序挂到HashMap里的transfer方法中了。
可以看到这对检测程序挂到哪里实在太方便了。。
具体挂的原因有些复杂还没有弄懂。感兴趣的同学自己研究一下吧。
刚接触Jconsole,很多功能都还不是太懂,以后再慢慢研究吧。
最近还是要多忙忙算法了。。。
------------------------------------------------------------
PS:HashMap是线程非安全的