如何在 Java 中 remove/postDelayed runnables?
How to remove/postDelayed runnables in Java?
发生事件时,我想 运行 一个 task/runnable 但延迟 2 秒后执行。
在这 2 秒内,如果发生相同的事件,我想删除之前的任务并重新post 到 运行 - 再次延迟 2 秒。
一个示例场景是后台编译。保存文件后,我等待 2 秒并开始编译 class 和其他,具体取决于 classes。我不想一直这样做 - 特别是如果有自动保存文件的编辑器,比如 IntelliJ IDEA。
那么,我怎样才能 remove/postDelayed 运行启用 Java,就像 Android 的处理程序(remove / postDelayed)?
要延迟任何任务并"restart"延迟,您可以使用Swing timer,如果是运行,请使用其方法restart
。
我想您可以使用 ScheduledExecutor
来完成此任务,方法是添加一种机制,用重新排队的任务替换排队的任务。您可以查看 ScheduledThreadPoolExecutor
的源代码以给出一个想法,也许会覆盖 ScheduledFuture<?> schedule( Runnable command, long delay, TimeUnit unit )
的实现并找出避免调度的方法,只有 运行 任务一次。
干杯,
您可以使用 Executors.newScheduledThreadPool
来安排任务,
你可以按照 post 的回答:
BlockingQueue<Runnable> queue = threadPool.getQueue();
为了得到排队的runnables。
发生事件时,我想 运行 一个 task/runnable 但延迟 2 秒后执行。
在这 2 秒内,如果发生相同的事件,我想删除之前的任务并重新post 到 运行 - 再次延迟 2 秒。
一个示例场景是后台编译。保存文件后,我等待 2 秒并开始编译 class 和其他,具体取决于 classes。我不想一直这样做 - 特别是如果有自动保存文件的编辑器,比如 IntelliJ IDEA。
那么,我怎样才能 remove/postDelayed 运行启用 Java,就像 Android 的处理程序(remove / postDelayed)?
要延迟任何任务并"restart"延迟,您可以使用Swing timer,如果是运行,请使用其方法restart
。
我想您可以使用 ScheduledExecutor
来完成此任务,方法是添加一种机制,用重新排队的任务替换排队的任务。您可以查看 ScheduledThreadPoolExecutor
的源代码以给出一个想法,也许会覆盖 ScheduledFuture<?> schedule( Runnable command, long delay, TimeUnit unit )
的实现并找出避免调度的方法,只有 运行 任务一次。
干杯,
您可以使用 Executors.newScheduledThreadPool
来安排任务,
你可以按照 post 的回答:
BlockingQueue<Runnable> queue = threadPool.getQueue();
为了得到排队的runnables。