![](/img/trans.png)
[英]Java implementation of Producer Consumer throws java.lang.IllegalMonitorStateException
[英]my code throws java.lang.IllegalMonitorStateException
package threads;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class text implements Runnable {
static Lock lock = new ReentrantLock();
public static void main(String[] args) throws InterruptedException {
testts();
new Thread(new text()).start();
}
static void testts() {
lock.lock();
}
@Override
public void run() {
lock.unlock();
System.out.println("un-locked");
}
}
拋出
Exception in thread "Thread-0" java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:127)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1175)
at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:431)
at threads.text.run(text.java:28)
at java.lang.Thread.run(Thread.java:619)
ReentrantLock#unlock()
的Javadoc狀態
如果當前線程不是此鎖的持有者,則拋出
IllegalMonitorStateException
。
您的新線程不擁有鎖,主線程擁有。 這樣,當新線程嘗試解鎖不持有的鎖時,將引發異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.