有n
执行某些操作的对象。执行操作后,时间戳将会更新。现在我想实现一个超时线程,它验证时间戳是否早于 60 秒。
我的第一个解决方案是使用一个线程(while-loop + sleep)来做到这一点,该线程保存一个包含所有对象(包括最后一个时间戳)的列表。现在我遇到的问题是,最坏的情况是线程需要 59 秒加上睡眠时间来决定超时。
我正在寻找像计时器这样可以更新延迟时间的解决方案。
有任何想法吗?
我认为使用带有 wait/notify 的监视器对象是合理的(如果您使用的是 JDK >= 5,则可以使用带有 wait/signal 的 Condition)
想法很简单:
工作线程:
doYourActualWork();
synchronized(jobFinishedMonitor) {
updateTimestamp();
jobFinishedMonitor.notify();
}
超时线程:
synchronized(jobFinishedMonitor) {
while(within60Second(timestamp)) {
jobFinishedMonitor.wait(60);
}
if (within60Second(timestamp)) {
timeoutHappened=true;
}
}
if (timeoutHappened) {
// do timeout handling
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)