A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 苏乞儿 中级黑马   /  2014-9-20 15:19  /  883 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. </blockquote></div><div class="blockcode"><blockquote>/*class MyLock{
  2.         static MyLock locka=new MyLock();
  3.         static MyLock lockb=new MyLock();
  4. }*/

  5. class Tickets implements Runnable {
  6.         Object locka=new Object();
  7.         Object lockb=new Object();
  8.        
  9.        
  10.         private boolean b;
  11.         Tickets(boolean b){
  12.                 this.b=b;
  13.         }
  14.         public void run(){
  15.                 while(true){
  16.                         if(true==b){
  17.                                         synchronized(locka){
  18.                                                 System.out.println(" if......locka");
  19.                                                 synchronized(lockb){
  20.                                                         System.out.println("  if......lockb");
  21.                                                 }
  22.                                         }
  23.                                
  24.                         }else{
  25.                                         synchronized(lockb){
  26.                                                 System.out.println("  else...lockb");
  27.                                                 synchronized(locka){
  28.                                                         System.out.println("  else...locka");
  29.                                                 }
  30.                                         }
  31.                                        
  32.                         }
  33.                 }
  34.                
  35.         }
复制代码

如上程序,我在类中新建两个Object对象,并用它当死锁程序的锁,可以程序竟然没有锁住。而我在类外又重新建了MyLock对象竟然锁住了,为什么啊,不是都是不同的两个对象么?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马