我的一个方法中有:
synchronized (o) {
 o.wait(time);
}
,另一个方法中有o.notify(),当我调用o.notify()时,我怎么知道synchronized 已经锁了多久?

解决方案 »

  1.   

    你是希望wait的线程知道自己等待了多久还是notify线程想知道另外的线程等待了多久?前者通常就是在wait之前调用System.currentTimeMills()记录时间,被唤醒后再算一下就知道了如果是后者比较麻烦,但是可以使用ManagementFactory.getThreadMXBean().getThreadInfo(t.getId());来获取一些信息
      

  2.   

    用时间差吧。
    补充一下,你像下面的代码是锁不主o的,wait会释放锁的,sleep才不会释放锁
    synchronized (o) {
     o.wait(time);
    }