java基础(死锁)

来源:互联网 发布:数据分析技术 编辑:程序博客网 时间:2024/05/24 05:02
/* 死锁(同步中嵌套同步,而使用不同的锁)    */class Test implements Runnable{private boolean flag = true;Test(boolean flag){this.flag=flag;}public void run(){if(flag){synchronized(Lock.a){System.out.println("ia");synchronized(Lock.b){System.out.println("ib");}}}else{synchronized(Lock.b){System.out.println("ea");synchronized(Lock.a){System.out.println("eb");}}}}}class Lock{static Object a=new Object();static Object b=new Object();}class Ly{public static  void main(String[] args){Thread t1=new Thread(new Test(true));Thread t2=new Thread(new Test(false));t1.start();t2.start();}}/*class Ticket implements Runnable{private int tick =100;Object obj =new Object();boolean flag=true;public void run(){if(flag){while(true){synchronized(this){if(tick>0){try{Thread.sleep(10);}catch(Exception e){}System.out.println(Thread.currentThread().getName()+"...Rest:"+tick--);}}}}else while(true)show();}public synchronized void show(){if(tick>0){try{Thread.sleep(10);}catch(Exception e){}System.out.println(Thread.currentThread().getName()+"...Rest:"+tick--);}}}class Ly{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(Exception e){}t.flag=false;t2.start();}}*/

0 0
原创粉丝点击