1. 程式人生 > >多線程死鎖發生情景之一:同步的嵌套

多線程死鎖發生情景之一:同步的嵌套

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

多線程死鎖發生情景之一:同步的嵌套