同步死锁
两个线程,一个线程持有另一个线程运行时的锁,就会死锁
public class SynchronizedLock{
public static void main(String[] args) throws InterruptedException {
SynchronizedLockDemo sld = new SynchronizedLockDemo();
Thread thread0 = new Thread(sld);
Thread thread1 = new Thread(sld);
thread0.start();
Thread.sleep(1);
sld.flag = true;
thread1.start();
}
}
enum Lock{
LOCKA,LOCKB;
}
class SynchronizedLockDemo implements Runnable{
//布尔变量的默认值是false
boolean flag;
public void synLock(){
if(flag){
synchronized(Lock.LOCKA){
System.out.println("从a到b外层");
synchronized(Lock.LOCKB){
System.out.println("从a到b内层");
}
}
}else{
synchronized(Lock.LOCKB){
System.out.println("从b到a外层");
synchronized(Lock.LOCKA){
System.out.println("从b到a内层");
}
}
}
}
@Override
public void run() {
synLock();
}
}
浙公网安备 33010602011771号