我得到這個異常,但我不明白爲什麼。embeddedStateException對嵌套鎖
public Test() {
globalLock = new ReentrantLock();
condition = globalLock.newCondition();
}
public void increaseRow(Integer row) {
matrixLock.lock();
try {
while (countIncreasingColumn > 0)
condition.await();
countIncreasingRow++;
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
condition.notifyAll();
matrixLock.unlock();
synchronized (rows.get(row)) {
for (int j = 0; j < column; j++)
matrix[row][j] += 1;
countIncreasingRow--;
}
}
}
線程類:
public void run() {
while (true) {
test.function(new Random().nextInt(10));
}
}
堆棧跟蹤:
Exception in thread "Thread-0" waiting thread for test 18
java.lang.IllegalMonitorStateException
at java.lang.Object.notifyAll(Native Method)
我是在notifyAll()
越來越thie例外。執行global.lock()
塊的線程是所有者,那麼爲什麼我得到這個?
這是什麼神祕的例外?我們猜測嗎?提供完整的堆棧跟蹤。 – 2014-11-01 13:14:50
@BoristheSpider等一下。 – OiRc 2014-11-01 13:15:54
@BoristheSpider更新了 – OiRc 2014-11-01 13:19:02