gpt4 book ai didi

java - 在等待另一个线程时让当前线程进入休眠状态

转载 作者:行者123 更新时间:2023-12-01 07:32:22 26 4
gpt4 key购买 nike

在我的应用程序中的某个时刻,我想让我的主线程(即当前正在执行的线程) hibernate 一段时间或直到后台完成(并将其唤醒),以先到者为准。

这是我所做的(我认为可行,但没有)

public static void main(String args[])
{
// .... other stuff ...

// show a splash screen
// just think of this as an image
showPlashScreen():
new Thread(new Runnable()
{
public void run()
{
// do some work here

// notify everyone after the work is done
Thread.currentThread().notifyAll();
}
}).start();

// now make the current thread to wait for the background
// or for at most 1000
Thread.currentThread().wait(1000);
disposeSplashScreen();

// ... other stuff ....
}

执行此操作,我不断收到java.lang.IllegalMonitorStateException

(部分)堆栈跟踪:

Caused by: java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)

.... <cut> ....

Exception in thread "Thread-7" java.lang.IllegalMonitorStateException
at java.lang.Object.notifyAll(Native Method)

最佳答案

为了能够调用notify(),您需要在同一个对象上进行同步。

synchronized (someObject) {
someObject.wait();
}

/* different thread / object */
synchronized (someObject) {
someObject.notify();
}

关于java - 在等待另一个线程时让当前线程进入休眠状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16313836/

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