死锁的讲解
下面是锁套锁,造成的死锁
检测死锁的方法!
运行测试!!!然后cmd jconsole命令 检测死锁!就能看见了!
左下角可以看出 死锁的线程
package com.laoluo.demo4;
/**
*
*
* 1死锁
* @author 戴尔
*
*/
public class DeadSample {
//下面是锁套锁非常容易出现死锁 每个锁都想要自己的资源!
private static String filleA="A文件";
private static String filleB="B文件";
public static void main(String[] args) {
new Thread(){
@Override
public void run() {
while(true) {
synchronized (filleA) {
System.out.println(this.getName()+"保存了A文件");
synchronized (filleB) {
System.out.println(this.getName()+"保存了B文件");
}
}
System.out.println("保存了所有文件!");
}
}
}.start();
new Thread() {
public void run() {
while(true) {
synchronized (filleA) {
System.out.println(this.getName()+"保存了A文件");
synchronized (filleB) {
System.out.println(this.getName()+"保存了B文件");
}
}
System.out.println("保存了所有文件!");
}
}
}.start();
}
}
死锁! 堆内存一直上涨!!!因为它一直侵入你的内存
Thread-0保存了A文件
Thread-0保存了B文件
保存了所有文件!
Thread-0保存了A文件
Thread-0保存了B文件
保存了所有文件!
还没有评论,来说两句吧...