1.什麼是死鎖
多線程中有多把鎖,由於java的搶佔式機制,在搶鎖的過程中,造成互相等待,代造成的現象
2.死鎖的條件
1。至少有兩把鎖
2.至少有兩個鎖對象
3。必須有synchronized的嵌套
package com.itheima.demo01;
public class demo02 {
public static void main(String[] args) {
Object obj1 = new Object();
Object obj2 = new Object();
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
synchronized (obj2) {
System.out.println("線程1搶到了進程");
synchronized (obj1) {
System.out.println("線程2搶到了進程");
System.out.println(Thread.currentThread().getName() + "執行了");
}
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
synchronized (obj1) {
System.out.println("線程2搶到了進程");
synchronized (obj2) {
System.out.println("線程1搶到了進程");
System.out.println(Thread.currentThread().getName() + "執行了");
}
}
}
}).start();
}
}