在Java中引入准确的延迟

时间:2018-12-13 05:12:20

标签: java arduino delay sleep

我正在使用Java程序通过Arduino控制电机。我打算在软件本身而不是在Arduino中引入延迟。由于使用TypeError: this.home[0].push is not a function引入延迟非常不准确,我该如何准确地做到这一点?此外,我想暂停延迟,恢复后,我希望软件完成其余的延迟。例如,如果我将延迟时间设置为1000毫秒,并在700毫秒处暂停,则我想停止电动机。恢复后,我想完成剩下的300毫秒。如果我使用while循环直到thread.sleep()达到特定的时间量,效率会如何?

1 个答案:

答案 0 :(得分:0)

使用ScheduledThreadPoolExecutorScheduledExecutorService是一种执行程序服务,可让您安排Java中未来和重复发生的异步任务。

已观察到,使用ScheduledExecutorService执行的长时间/重复任务可能会导致内存泄漏。从Java 7开始,ScheduledThreadPoolExecutor公开了一个新方法setRemoveOnCancelPolicy。确保设置此标志,以防万一。

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
// Explicitly call setRemoveOnCancelPolicy on the instance
executor.setRemoveOnCancelPolicy(true);
  

根据javaDoc,setRemoveOnCancelPolicy设置有关是否应立即执行已取消任务的策略   在取消时从工作队列中删除。该值是   默认为假