gpt4 book ai didi

java - 按需唤醒 hibernate 线程

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:34 29 4
gpt4 key购买 nike

我有一个仆人线程,只要我的主线程告诉它执行任务,我就想执行该任务。

这是我的仆人线程中的 run 方法:

public void run() {
while (true) {
System.out.println("Servant woke up.");
for (int i = 0; i < globalVariable; i++) {
System.out.println("Servant is working very hard.");
}
try {
System.out.println("Servant went to sleep.");
//I want servant to sleep until master wakes it up so I picked a big number
Thread.sleep(999999999);
} catch (InterruptedException e) {
System.out.println("Servant had a hard time falling asleep");
}
}
}

所以当我的主线程执行此操作时:

globalVariable = 10;
servant.interrupt();

我希望我的仆人说它醒了,工作了 10 倍,然后又睡着了,但现在它没有做任何事情,除了最初的“仆人醒了”之外,控制台上什么也没有打印。和“仆人去 sleep 了。”

(我对线程非常陌生,很抱歉,如果这是非常基本的)

最佳答案

您可能想看看 ReentrantLock ( https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantLock.html )

这使您可以通过调用 newCondition() 方法创建一个Condition ( https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html )。此条件允许您的线程 await()signal() 通知它们您的程序中发生了一些特殊情况。

关于java - 按需唤醒 hibernate 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55802162/

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