死锁是同步块嵌套,你这个根本不满足,简单给你改一下,你根据我的更改实现就行了.看下我刚写的,你就明白了.- public void run(){
- while(true){
- try{
- Thread.sleep(500);
- }catch(InterruptedException e){
- e.printStackTrace();
- }
- if(flgs){
- flgs=false;
- synchronized(this){
- System.out.println(Thread.currentThread().getName()+"得到书了,现在想要画 A");
- synchronized(ThreadLock.class){
- System.out.println(Thread.currentThread().getName()+"得到画了,现要想要书 B");
- }
- }
- }
- else{
- flgs=true;
- synchronized(ThreadLock.class){
- System.out.println(Thread.currentThread().getName()+"得到画了,现在想要书 C");
- synchronized(this){
- System.out.println(Thread.currentThread().getName()+"得到书了,现要想要画 D");
- }
- }
- }
- }
- }
复制代码 |