[英]How do I do a task after waiting 10 seconds in Java?
这是我第一次将 Java 用于项目,我需要这样做:
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run (){
Request postRequest2 = new Request(CoAP.Code.POST);
postRequest2.setURI(String.format("%s%s", COAP_ENDPOINT1, targetStatusActuatorUri));
postRequest2.setConfirmable(true);
}
},
10000
);
但它会抛出一个错误Unreachable 语句,我不明白为什么:(
正如所评论的,您需要提供更多调试细节。
ScheduledExecutorService
更一般地说,我可以说Timer
和TimerTask
类在几年前就被Executors框架所取代。 他们的 Javadoc 如此注释。
ScheduledExecutorService
允许您在执行任务之前指定延迟。 建立服务,并保留它以供以后使用。
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor() ;
将您的任务定义为Runnable
(或Callable
)。
Runnable task = () -> {
turnOffActuator() ;
};
在您的业务逻辑中,打开执行器,然后将关闭的任务分配给执行器,同时进行延迟调度。
turnOnActuator() ;
ses.schedule( task , 10 , TimeUnit.SECONDS ) ;
确保在您的应用程序结束/退出之前最终关闭您的执行程序服务。 否则,支持您的执行程序服务的线程池可能会无限期地继续运行,就像僵尸♂️。
所有这些都已经在 Stack Overflow 上多次介绍过。 搜索以了解更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.