当synchronized使用过多时,可能会造成死锁,那么死锁到底是怎么一回事呢。先看下面的代码,实现死锁://死锁的实现classA{publicvoidget(){System.out.println("A说:我开始启动了,B,给我你的
当synchronized使用过多时,可能会造成死锁,那么死锁到底是怎么一回事呢。先看下面的代码,实现死锁:
//死锁的实现classA{publicvoidget(){System.out.println("A说:我开始启动了,B,给我你的资源");}publicvoidsay(){System.out.println("A获得资源");}}classB{publicvoidget(){System.out.println("B说:我开始启动了,A,给我你的资源");}publicvoidsay(){System.out.println("B获得资源");}}claSSMyThreadimplementsRunnable{publicstaticAa=newA();publicstaticBb=newB();publicbooleanflag=false;publicvoidrun(){if(flag){synchronized(a){a.get();try{Thread.sleep(500);}catch(InterruptedExceptione){}synchronized(b){ //此同步代码块在另一同步代码块里a.say();}}}else{synchronized(b){b.get();try{Thread.sleep(500);}catch(InterruptedExceptione){}synchronized(a){ //此同步代码块在另一同步代码块里b.say();}}}}}publicclassDemo24{publicstaticvoidmain(Stringargs[]){MyThreadmt1=newMyThread();MyThreadmt2=newMyThread();mt1.flag=true;mt2.flag=false;Threadth2=newThread(mt1);Threadth3=newThread(mt2);th2.start();th3.start();}}
--结束END--
本文标题: java-synchronized 嵌套使用代码详解
本文链接: https://lsjlt.com/news/223221.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0