synchronized (m_threadLock)
 {
     while (m_thread != null)
     {
          try
          {
              m_threadLock.wait();
          }
          catch (InterruptedException ex)
          {
          }
     }
 }以上代码会不会造成死锁啊?应该是不会的。这段代码来自于一个运行正常的开源项目。为什么不会死锁呢?

解决方案 »

  1.   

    m_thread 是什么东西? 光从你给的代码看,没看到会死锁!
      

  2.   

    网上看看这个  synchronized
    搜索中还可以学到很多额外的哦
      

  3.   

    m_thread 是个什么啊?应该看全部代码才能看出为什么不会死锁!光这个看不出来的!
      

  4.   

    synchronized (m_threadLock)是不是不允许其它线程访问m_threadLock,也就不会有其它线程调用m_threadLock.notify()。
    m_threadLock再调用m_threadLock.wait()会一直等待下去,难道不会死锁吗?
      

  5.   

    建议看看文档,wait()等待会有一定时间的,超过了就会自动醒来,而且你贴的代码只是一部分,看不出有什么问题.
      

  6.   

    wait/notify就是这么用的,调用wait()释放锁,被notify唤醒后才重新获得锁
      

  7.   

    应该说wait是释放锁然后自己处于“睡觉"状态,所以无论即使这个线程等待多长时间都不会引起死锁,因为它没有占用资源(m_threadLock)不放.