繁体   English   中英

在 Java 中等待 10 秒后如何执行任务?

[英]How do I do a task after waiting 10 seconds in Java?

这是我第一次将 Java 用于项目,我需要这样做:

  • 发送 CoAP POST 请求以打开执行器
  • 等待 10 秒
  • 发送 CoAP POST 请求以关闭执行器。

    我在我编写的必须自动打开/关闭执行器的方法中使用此代码:
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

更一般地说,我可以说TimerTimerTask类在几年前就被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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM