死锁demo

package com.jd.schdule;

/**
 * 死锁
 * @author yfzhangbin
 */
public class DeadlockTest {
	public static Object lock1 = new Object();
	public static Object lock2 = new Object();
	
	public static void deadlock() {
		new Thread(new Runnable() {	// 线程T1
			public void run() {
				synchronized(lock1) {
					System.out.println(1);
					try {
						Thread.sleep(1000);
					} catch(Exception e) {
						e.printStackTrace();
					}
					synchronized(lock2) {	// 线程T1持有锁lock1,并等待线程T2释放锁lock2
						System.out.println(2);
					}
				}
			}
		}).start();
	  
		new Thread(new Runnable() {	// 线程T2
			public void run() {
				synchronized (lock2) {
					System.out.println(3);
					synchronized (lock1) {	// 线程T2持有锁lock2,等待线程T1释放锁lock1
						System.out.println(4);
					}	
				}	
			}
		}).start();
	}

	public static void main(String[] a){
		deadlock();
	}
}

 输出:

1
3
进入死锁状态,进入无限等待中。

 

 

你可能感兴趣的:(demo)