gpt4 book ai didi

java - 如何在java中实现高效的超时

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:34 26 4
gpt4 key购买 nike

n 对象执行一些操作。执行操作后,时间戳将被更新。现在我想实现一个超时线程来验证时间戳是否早于例如 60 秒。

我的第一个解决方案是使用一个线程(while-loop + sleep)来实现,该线程持有一个包含所有对象的列表,包括最后一个时间戳。现在我遇到的问题是,最坏的情况是线程需要 59 秒加上 sleep 时间来决定超时。

我正在寻找一种解决方案,例如可以更新延迟时间的计时器。

有什么想法吗?

最佳答案

我认为使用带有 wait/notify 的监视器对象是合理的(如果您使用的 JDK >= 5,则可以将 Condition 与 await/signal 一起使用)

想法很简单:

工作线程:

doYourActualWork();
synchronized(jobFinishedMonitor) {
updateTimestamp();

jobFinishedMonitor.notify();
}

超时线程:

synchronized(jobFinishedMonitor) {
while(within60Second(timestamp)) {
jobFinishedMonitor.wait(60);
}
if (within60Second(timestamp)) {
timeoutHappened=true;
}
}
if (timeoutHappened) {
// do timeout handling
}

关于java - 如何在java中实现高效的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11629267/

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