首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > 高性能WEB开发 >

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

2013-06-25 
请教大神关于Java的同步问题本帖最后由 cloudeagle_bupt 于 2013-05-09 20:48:55 编辑如下代码段:class T

请教大神关于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,根本不会唤醒的啊。

热点排行