gpt4 book ai didi

java - 使用从属线程唤醒 hibernate 的主线程

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

我想在Worker线程中定义一个Timer线程,如果Worker线程 hibernate 时间过长(这个 hibernate 时间是动态定义的),它将调用Worker线程的中断方法。所以本质上代码如下:

public class Worker implements Runnable {
private Timer timer;
@Override
public void run(){
try {
Thread.sleep(7000);
timer.start()
//timer must call this Thread's
//interrupt method if it sleeps
//for more than a specified time.
} catch (InterruptedException e) {
System.out.println("I was awakened. Gotta work!")
}

}
}

这可能是实现的 Timer 类:

public class Timer implements Runnable {


@Override
public void run(){
try {
Thread.sleep(3000);
//Interrupt the parent thread it was called from..
//In this case, an instance of Worker.
} catch (InterruptedException e) {
System.exit(1);
}

}
}

我不确定我是否找到了实现此功能的方法。任何帮助将不胜感激!

最佳答案

我有一些意见,

Timer类中,您需要有一个Worker类的实例,以便可以调用parent.interrupt()。

为此,我建议您为 Timer 类创建一个新的构造函数,如下所示,

public class Timer implements Runnable {

Worker parent;

public Timer(Worker parent)
{
this.parent = parent;
}

@Override
public void run(){
try {
Thread.sleep(3000);
//Interrupt the parent thread it was called from..
//In this case, an instance of Worker.
parent.interrupt();
} catch (InterruptedException e) {
System.exit(1);
}

}
}

其次,在您的Parent类中,您需要将顺序更改为以下内容,

timer.start()
Thread.sleep(7000);

否则,工作线程将在启动计时器线程之前 hibernate 。

希望对你有帮助..

关于java - 使用从属线程唤醒 hibernate 的主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23233675/

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