【发布时间】:2014-05-14 12:15:15
【问题描述】:
我遇到了一个问题,发帖者试图让一个线程等待一秒钟。他们正在使用wait,但在synchronized 块之外,因此它崩溃了。
给定一个正在运行的线程,要暂停给定时间的执行,可以这样做:
Thread.sleep(1000);
这应该也可以,并且结果非常相似:
synchronized(this) {
this.wait(1000);
}
使用wait 超时,线程将在 1 秒后取消暂停。
问题是这样的:如果我没有任何监控和通知问题,是否有实际理由使用一个而不是另一个?
【问题讨论】:
-
关于此事的有用链接:stackoverflow.com/questions/1036754/…
-
@Ivan :是的,我已经阅读了这个问题,关于这个问题的讨论是 cmets,但我并没有真正找到明确的答案。
-
答案是他们做不同的事情。 sleep() 会受到中断。 wait() 服从 notify()。它们不相等。
-
wait和sleep提供完全不同的功能。坦率地说,这似乎是另一个问题的重复。怎么不是?那里的两个最佳答案非常清楚地显示了差异。 -
我知道两者之间的区别。但是在某些情况下似乎能够执行相同的任务(暂停线程的执行。)在链接的问题中有讨论,但没有实际回答这个问题。
标签: java multithreading