我需要有一些例程R,我可以启动它并每5秒执行一次任务T.如何开始,暂停,继续每5秒钟执行一次任务作为“保持繁忙”任务
然后我需要暂停这个重复例程R--但确保一旦它开始了一个任务T,这个任务就结束了,只有重复例程才会停止开始下一个任务。应该允许每个启动的任务完成! 任务本身最多需要2秒,因此重复中没有重叠!
另外我需要确保另一个例程R2仅在任务T完成后才启动。
所以基本上这是应该的样子:
start R
- R starts T the first time
- T runs and finishes, this task T takes maximum 2 seconds
- T starts again after 5 seconds it started the first time
now stop R (because user pressed a button)
- let T finish
- stop R from starting a new Task
continue with R2 (basically the task from which the button has been pressed)
BUT continue with R2 ONLY AFTER T has finished for sure! - and R will not repeat any new T
once R2 is done continue with R
- so R will start a new task T
所以基本上我需要工作T的程序R为某种形式的“保持忙碌常规”,而用户读取例如文本。
当用户完成阅读并希望通过按下按钮继续时,“保持繁忙程序”应该停止,并且在用户的预期任务完成之后再次继续,这是由首先按下按钮触发的
所以我发现
private final static ScheduledExecutorService scheduler = Executors
.newScheduledThreadPool(1);
// Schedule a task to run every 5 seconds with no initial delay.
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
..do task T
}
}, 0L, 5L, TimeUnit.SECONDS);
但是,所有的停止,继续并等待对于T完成R2继续,我不知道该怎么办propperly之前。
完美:-)谢谢 – user387184