2012-07-26 41 views
-1

可能重複:
Java Wait and Notify: IllegalMonitorStateException爪哇 - 試圖暫停線程

什麼是

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) 
+0

這是一個重複的問題。你不能在對象上「等待()」或「通知()」,除非你處於同步(鎖定)塊中。 – Gray 2012-07-26 23:23:03

+0

您在'this'上同步,但您等待'lock'。 – Neil 2012-07-26 23:40:26

回答

0

你沒有​​左右的鎖。

public void run() { 
    while (numItersCompleted < maxNumIters) { 
     while (guiState == GuiState.PAUSED) { 
      try { 
       synchronized (lock) { 
        lock.wait(); // problematic line 
       } 

我要添加一個鏈接,但加里和我打賭它