簡體   English   中英

我的代碼拋出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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM