【发布时间】:2012-07-26 23:21:02
【问题描述】:
有什么问题
private final Object lock;
public synchronized void run() {
while (numItersCompleted < maxNumIters) {
while (guiState == GuiState.PAUSED) {
try {
lock.wait(); // problematic line
投掷:
java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
【问题讨论】:
-
这是一个重复的问题。除非您在对象上的
synchronized(lock)块中,否则您不能在对象上使用wait()或notify()。 -
您在
this上同步,但您在lock上等待。
标签: java multithreading synchronization