我想在一定数量的秒后执行几行程序。如何做到这一点?
我已经尝试过一些方法,但是无法正常工作。灯应该在一定时间后才能点亮和熄灭。
初学者程序,如果这是一个愚蠢的问题,非常抱歉。
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
};
{
答案 0 :(得分:0)
我了解您的意图是:
您应该使用主要方法(在Timer.schedule块之外)打开“ Tv 1”。此外,您应将两个以后的活动安排为独立的任务,并适当地延迟如下:
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);
希望对您有帮助。
答案 1 :(得分:0)
我可以在您的代码中看到语法错误。您错过了正确关闭timer.schedule()的过程,使用大括号} 而不是括号)。请更新
new java.util.Timer().schedule(
new java.util.TimerTask()
{
public void run()
{
//........
}
},
5000
);
代码段: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");
}
}