预定执行程序:以固定速率轮询结果,如果超时或结果有效,则退出

预定执行程序:以固定速率轮询结果,如果超时或结果有效,则退出,第1张

预定执行程序:以固定速率轮询结果,如果超时或结果有效,则退出

使它成为自调度任务。用伪代码:

public class PollingTaskRunner {...CountDownLatch doneWait = new CountDownLatch(1);volatile boolean done;PollingTaskRunner(Runnable pollingTask, int frequency, int period) {    ...    endTime = now + period;    executor.schedule(this, 0);}run() {    try {        pollingTask.run();    } catch (Exception e) {        ...    }    if (pollingTask.isComplete() || now + frequency > endTime) {        done = true;        doneWait.countDown();        executor.shutdown();    } else {        executor.schedule(this, frequency);    }}await() {    doneWait.await();}isDone() {    return done;}}

它并不复杂,但是在您第一次运行/测试时添加大量调试语句,以便您了解发生了什么。一旦按预期运行,就很容易重用该模式。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5490769.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存