多線程死鎖發生情景之一:同步的嵌套
阿新 • • 發佈:2017-08-07
print star ati run void catch log div get
/* 死鎖:常見情景之一:同步的嵌套。 */ class Ticket implements Runnable { private int num = 100; Object obj = new Object(); boolean flag = true; public void run() { if(flag) { while(true) { synchronized(obj) { show(); } } }else { while(true) { this.show(); } } } public synchronized void show() { synchronized(obj) { if(num>0) { try{Thread.sleep(10);}catch (InterruptedException e){} System.out.println(Thread.currentThread().getName()+".....sale...."+num--); } } } } class DeadLockDemo {
public static void main(String[] args) { Ticket t = new Ticket(); Thread t1 = new Thread(t); Thread t2 = new Thread(t); t1.start(); try{Thread.sleep(10);}catch(InterruptedException e){} t.flag= false; t2.start(); } }
多線程死鎖發生情景之一:同步的嵌套