Java 在一定的秒数后执行几行程序

Java 在一定的秒数后执行几行程序,java,timer,Java,Timer,我想在几秒钟后执行几行程序。如何做到这一点 我已经试过了,但没用。灯应该在一定的秒数后打开和关闭 初学者程序很抱歉,如果这是一个愚蠢的问题 package io.github.zeroone3010.yahueapi; import org.omg.PortableServer.POAManagerPackage.State; import java.util.*; public class looptest { public static void main(String args

我想在几秒钟后执行几行程序。如何做到这一点

我已经试过了,但没用。灯应该在一定的秒数后打开和关闭

初学者程序很抱歉,如果这是一个愚蠢的问题

package io.github.zeroone3010.yahueapi;
import org.omg.PortableServer.POAManagerPackage.State;
import java.util.*;
public class looptest 
{
    public static  void main(String args[]) 
    {
        final String bridgeIp = "ip"; 
        final String apiKey = "key"; 
        final Hue hue = new Hue(bridgeIp, apiKey);
        final Room room = hue.getRoomByName("Woonkamer").get();
        int counter = 0;
        boolean loop;
        Timer timer = new Timer();

        new java.util.Timer().schedule( 
        new java.util.TimerTask() 
        {
            int secondsPassed = 0 ;

            public void run() 
            {
                secondsPassed++;
                System.out.println(secondsPassed);
                    room.getLightByName("Tv 1").get().turnOn();
                    if (secondsPassed > 3) // after 3 seconds tv 2 on
                        room.getLightByName("Tv 2").get().turnOn();
                    if (secondsPassed > 11) // after 11 seconds tv 1 and 2 off
                        room.getLightByName("Tv 1").get().turnOff();
                        room.getLightByName("Tv 2").get().turnOff();
            }
        },
        5000
    };          
    {

我理解您的意图是:

  • 立即打开“Tv 1”灯
  • 3秒钟后打开“Tv 2”灯
  • 11秒后关闭“Tv 1”和“Tv 2”灯
您应该在主方法中打开“Tv 1”灯(在Timer.schedule块之外)。此外,您应将未来的两项活动安排为独立任务,并适当延迟,如下所示:

    room.getLightByName("Tv 1").get().turnOn();

    Timer timer = new Timer();

    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            room.getLightByName("Tv 2").get().turnOn();
        }
    }, 3000L);

    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            room.getLightByName("Tv 1").get().turnOff();
            room.getLightByName("Tv 2").get().turnOff();
        }
    }, 11000L);

我希望它能有所帮助。

我可以看到您的代码中有语法错误。您没有关闭计时器。正确地安排(,使用大括号}代替括号。请更新它

 new java.util.Timer().schedule( 
        new java.util.TimerTask() 
        {    
            public void run() 
            {
               //........
            }
        },
        5000
        ); 
Snipplet:Java TimerTask示例

import java.util.Timer;
import java.util.TimerTask;
class Main {
  public static void main(String[] args) {
    System.out.println("Timer Sample!");

         long delayInMilliSeconds = 5000;
         Timer timer = new Timer();

         timer.schedule(new java.util.TimerTask(){
            int secondsPassed = 0 ;
            public void run() 
            {     
              System.out.println("Executed after the delay");
              timer.cancel();
            }
        },delayInMilliSeconds);

     System.out.println("Task run after "+ delayInMilliSeconds +" ms");
  }
}

您好@MrBlik,谢谢您的邀请。您能解释一下您在代码中使用
定时器的位置吗?