同步死锁

两个线程,一个线程持有另一个线程运行时的锁,就会死锁

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();
	}
}

  

posted @ 2014-03-12 09:33  lxricecream  阅读(142)  评论(0)    收藏  举报