这是我在维护的一些代码中看到的一段代码。
Object lock = new Object();
synchronized( lock )
{
try
{
lock.wait( 50000 );
Thread.sleep( 3000 );
}
catch(Exception ex)
{
}
}
开发人员希望将当前线程挂起一段时间,并使用 Object#wait 作为机制。显然,由于这个原因使用等待/通知协议是不好的形式;但是,调用 wait(millisec) 和 Thread.sleep 之间有什么重大区别吗?
除了在 waiting() 之前必须获取监视器之外,只要没有外部设备进行 .notify() 处理,就没有什么大的区别了。
在古老的 Java 代码中,您会看到人们使用 wait() 而不是 Thread.sleep(),因为 Thread.sleep() 会冻结系统上的整个应用程序,而无需抢占式多任务处理(我正在看 OS9)。从技术上讲, wait() 还允许您使用纳米分辨率等待,但实际上它们很少那么准确。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)