寫一個會導致死鎖的線程
阿新 • • 發佈:2019-02-11
防止 cat stack nts 當前 ace 導致 catch sync
public class Test { static Object o1 = new Object(); static Object o2 = new Object(); public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { synchronized (o1) { System.out.println("線程1鎖o1"); try { Thread.sleep(1000);//讓當前線程睡眠,保證讓另一線程得到o2,防止這個線程啟動一下連續獲得o1和o2兩個對象的鎖。 synchronized (o2) { System.out.println("線程1鎖o2"); } } catch (InterruptedException e) { e.printStackTrace(); } } } }).start();new Thread(new Runnable() { @Override public void run() { synchronized (o2) { System.out.println("線程2鎖o2"); synchronized (o1) { System.out.println("線程2鎖o1"); } } } }).start(); } }
寫一個會導致死鎖的線程