我正在使用Java程序通过Arduino控制电机。我打算在软件本身而不是在Arduino中引入延迟。由于使用TypeError: this.home[0].push is not a function
引入延迟非常不准确,我该如何准确地做到这一点?此外,我想暂停延迟,恢复后,我希望软件完成其余的延迟。例如,如果我将延迟时间设置为1000毫秒,并在700毫秒处暂停,则我想停止电动机。恢复后,我想完成剩下的300毫秒。如果我使用while循环直到thread.sleep()
达到特定的时间量,效率会如何?
答案 0 :(得分:0)
使用ScheduledThreadPoolExecutor
。 ScheduledExecutorService
是一种执行程序服务,可让您安排Java中未来和重复发生的异步任务。
已观察到,使用ScheduledExecutorService
执行的长时间/重复任务可能会导致内存泄漏。从Java 7开始,ScheduledThreadPoolExecutor公开了一个新方法setRemoveOnCancelPolicy。确保设置此标志,以防万一。
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
// Explicitly call setRemoveOnCancelPolicy on the instance
executor.setRemoveOnCancelPolicy(true);
根据javaDoc,setRemoveOnCancelPolicy设置有关是否应立即执行已取消任务的策略 在取消时从工作队列中删除。该值是 默认为假