gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:54:56 28 4
gpt4 key购买 nike

运行将从 main 方法开始,如果在某些方法中我使用了 this.wait() 而没有同步块(synchronized block),它将抛出 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();
}

}

最佳答案

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

如果你只想等待一定的时间,Thread.sleep是您想要的方法。

关于java - 如果只有线程,为什么我们需要对象监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18502637/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com