如果只有线程,为什么我们需要对象监视器

Asl*_*wer 1 java

运行将从main方法开始,如果在某些方法中我使用this.wait()而没有synchronized块,它将抛出illegalStateMonitorException.

如果只有一个线程为什么不能等待,我们为什么要在这里使用锁定.线程也不会执行任何其他任务.它可以在那里等待.

我不明白为什么如果有单线程需要锁定.

public class waitSleepCheck extends Thread{

    public void method() throws InterruptedException ,IllegalMonitorStateException{

        this.wait(1000);

    }

    public static void main(String args[]) throws InterruptedException{
        waitSleepCheck object = new waitSleepCheck();
        object.method();
    }

}
Run Code Online (Sandbox Code Playgroud)

use*_*ica 5

Object.wait不是"等这么久".它是"等待其他一些线程做某事".采用参数的形式是"等待其他一些线程做某事,但在这么久之后就会感到无聊并停止".您需要保持对象的锁定以确保与线程正确同步,该线程将通知您正在等待的事情已完成.在单线程上下文中使用该方法没有意义.

如果你只想等一段时间,那Thread.sleep就是你想要的方法.