死锁
死锁怎么产生的
两个或多个线程,互相拥有对方需要的资源,又互相抢占对方的资源,又不肯释放自己的资源,这就造成了死锁。
java中怎么造成死锁的
出现了锁的嵌套,解决办法就是不要写锁的嵌套
死锁代码实现如下
public class DeadLock {
public static void main(String[] args) {
Object o1 = new Object();
Object o2 = new Object();
new Thread(new Runnable() {
@Override
public void run() {
while (true){
//锁1
synchronized (o1){
//锁2
synchronized (o2){
System.out.println("张三吃饭");
}
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
while (true){
//锁2
synchronized (o2){
//锁1
synchronized (o1){
System.out.println("李四吃饭");
}
}
}
}
}).start();
}
}
结果如下:
可以看到输出了数据,但是程序并没有停止,但是也不再输出数据,这是就产生了死锁
标签:synchronized,void,Object,死锁,new,public From: https://www.cnblogs.com/qifenku/p/17251488.html