如何在Java中删除/ postDelayed runnables?

时间:2015-05-06 11:04:04

标签: java runnable

在一个事件发生时,我想运行一个任务/可运行但在2秒内延迟它的执行。

在这2秒钟内,如果发生同样的事件,我想删除上一个任务并重新发布它 - 再次延迟2秒。

示例场景是后台编译。保存文件时,我等待2秒钟并开始编译类和其他类,具体取决于类。我不想一直这样做 - 特别是如果有编辑器自动保存文件,比如IntelliJ IDEA。

那么,我如何删除/ postDelayed runnables in Java ,比如Android的Handler(remove / postDelayed)?

3 个答案:

答案 0 :(得分:1)

您可以使用Executors.newScheduledThreadPool来安排任务, 你可以按照post的回答:

BlockingQueue<Runnable> queue = threadPool.getQueue();

以获得排队的runnables。

答案 1 :(得分:0)

延迟任何任务和&#34;重启&#34;延迟,您可以使用Swing timer,如果它正在运行,请使用其方法restart

答案 2 :(得分:0)

我认为您可以使用ScheduledExecutor来完成此操作,方法是添加一个机制来将排队的任务替换为重新排队的任务。你可以查看ScheduledThreadPoolExecutor的源代码来提出一个想法,或许可以覆盖ScheduledFuture<?> schedule( Runnable command, long delay, TimeUnit unit )的实现并找出避免调度,只运行一次任务。

干杯,