当前位置: 代码迷 >> 高性能WEB开发 >> 请问大神关于Java的同步有关问题
  详细解决方案

请问大神关于Java的同步有关问题

热度:223   发布时间:2013-06-25 23:45:41.0
请教大神关于Java的同步问题
本帖最后由 cloudeagle_bupt 于 2013-05-09 20:48:55 编辑
如下代码段:

class T extends Thread {
   T() {  setDemon(true);}
   int a, b;
   run(){
       synchronized(a)
       { 
          .....
          a.wait() ;  //代码运行到这里.
       }    

       synchronized(b)
       { 
          b.wait(); 
       }    
   }
}

class T2 {
   public void test()
  {    b.notifyAll() ;}

}

 

    如果线程T运行到a.wait() 时,  另外一个函数执行了b.notifyAll() ,这个时候T这个线程该做什么? 
是继续a.wait()进行等待么? 那这时候收到的notifyAll()会如何处理呢?

   可否这样理解,即由于b的锁T没有获得,因此T无法收到notiFyAll的信号。

    本人是菜鸟,对同步机制不太熟,请大牛指教.
  
Java 多线程

------解决方案--------------------
int a;
a.wait();

这种写法可以?貌似锁必须加载对象上吧,对基本类型不能这么用吧。wait和notify是object类的方法,必须继承自object类(当然所有java类都是,除了基本类型)的对象才能有这个方法。

另外你对a执行wait,对b对象执行notify,根本不会唤醒的啊。
  相关解决方案