死锁意思就是访问a线程定义了同步代码块locka,访问b线程定义了同步代码块lockb,这样当a线程要访问b,b线程也要访问a,这样就导致了死锁的出现
class Test implements Runnable {
private boolean flag;
public Test(boolean flag) {
this.flag=flag;
}
@Override
public void run() {
if(flag){
while (true) {
synchronized (MyLock.locka) {
System.out.println("if locka");
synchronized (MyLock.lockb) {
System.out.println("if lockb");
}
}
}
}else{
while (true) {
synchronized (MyLock.lockb) {
System.out.println("else lockb");
synchronized (MyLock.locka) {
System.out.println("else locka");
}
}
}
}
}
}
class MyLock{
static Object locka=new Object();
static Object lockb=new Object();
}
public class ThreadTest{
public static void main(String args[]){
System.out.println("111");
Thread thread1=new Thread(new Test(true));
Thread thread2=new Thread(new Test(false));
thread1.start();
thread2.start();
}
}