A和B共享同一个锁dataSynAB不就可以了么synchronized(dataSyn)
     { 
      synchronized(dataSynAB)
       { notify(); }
          synchronized(dataSynAC) //想唤醒谁就唤醒谁,是要求这样吧?
               {  notify();   }
           
          wait();
     }

解决方案 »

  1.   

    循环队列达不到想要谁起来就要谁起来的目的。
    这里写出一个类供参考,其他的仿照就可以了,呵呵。
    class A extends Thread
    {
       public final Object dataSynA= new Object();
        
       boolean  继续运行==true;
       boolean  需要暂停A去运行B==false;
       boolean  需要暂停A去运行C==false;
     
       public void run()
        {
            while(继续运行==true||需要暂停A去运行B==true||需要暂停A去运行C==true)
             //“继续运行“保证这个线程的继续执行
        {   
                if(需要暂停A去运行B==true)
                   {
                      Synchronized(dataSynA)
                          {  wait(); }
                      Synchronized(dataSynB)
                          {  notify();}
                    }
                  else if(需要暂停A去运行C==true)
        {
      Synchronized(dataSynA)
                          {  wait(); }
                      Synchronized(dataSynB)
                          {  notify();}
         }
      else if(继续运行==true)
        { 
      Synchronized(dataSynA)
                          {  
        //do some work...  
    wait(1000); 
      }
      System.out.println("Continue....");
         }
        }
                 
         }
     public void Request去运行B()
    {
        需要暂停A去运行B==true;
        Synchronized(dataSynA)
                 {  notify(); }

        }
     public void Request去运行C()
    {
        需要暂停A去运行C==true;
        Synchronized(dataSynA)
                 {  notify(); }

        }
         
    };
      

  2.   

    note:
       [1]
             Synchronized(dataSynB)
                          {  notify();}
              //这个dataSynB应该是形如b.dataSynB;b为B类的实例。
              //同理如dataSynC也应该形如c.dataSynC;
       [2]   
              可能直接看起来比较不好看,你可以考出来用editplus或是jbuilder整理一下再看,应该舒服一些。
      

  3.   

    不好意思,一口气写出来还真的有些差错,整理一下:class A extends Thread
    {
       public final Object dataSynA= new Object();
        
       boolean  继续运行==true;
       boolean  需要暂停A去运行B==false;
       boolean  需要暂停A去运行C==false;
     
       public void run()
        {
            while(继续运行==true||需要暂停A去运行B==true||需要暂停A去运行C==true)
            //“继续运行“保证这个线程的继续执行
              {   
                if(需要暂停A去运行B==true)
                   {
                     Synchronized(dataSynA)
                        {  wait(); }
                     Synchronized(b.dataSynB)  //b is the instance of B class.
                        {  notify();}
                    }
                  else if(需要暂停A去运行C==true)
           {
             Synchronized(dataSynA)
                          {  wait(); }
                      Synchronized(c.dataSynC)   //c is the instance of C class.
                          {  notify();}
            }
          else if(继续运行==true)
            { 
      Synchronized(dataSynA)
                         {  
            //do some work...  
                    wait(1000); //最好这样处理,不然A就会成为利己线程不好。
           System.out.println("Continue....");
                 }
             }
           }
                 
         }
     public Synchronized void Request去运行B()
        {
        需要暂停A去运行B==true;
        Synchronized(dataSynA)
                 {  notify(); }

         }
     public Sychronized void Request去运行C()
        {
        需要暂停A去运行C==true;
        Synchronized(dataSynA)
                 {  notify(); }

        }
         
    };