gpt4 book ai didi

Java如何写一个定时器

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:43:29 32 4
gpt4 key购买 nike

我想用 java 编写一个计时器。它将执行以下操作:程序启动时,启动计时器1,计时器1 将在45 分钟后停止,同时启动第二个计时器,计时器将在15 分钟后停止。此时第一个定时器会再次启动,重复上面的循环,直到程序退出第一计时器:45分钟(我可以使用电脑的时间)第二个定时器:15分钟(暂停时间)第一计时器:45分钟(我可以使用电脑的时间)第二个定时器:15分钟(暂停时间)第一计时器:45分钟(我可以使用电脑的时间)第二个计时器:15分钟(暂停时间)

我不知道如何使用线程和计时器 (utils,swing) 所以我尝试使用 while(true) 但 cpu 上升了。这是我当前的代码

static int getMinute(){
Calendar cal=Calendar.getInstance();
int minute=cal.getTime().getMinutes();
return minute;
}

public static Runnable clockf(){
if (endTime>=60){
endTime=endTime-60;}
System.out.println(startTime);
System.out.println(currentTime);
System.out.println(endTime);

if(currentTime==endTime){
pauseStart=getMinute();
currentTime=getMinute();
pauseEnd=pauseStart+15;

if(currentTime==pauseEnd){
pauseStart=0;
pauseEnd=0;
startTime=getMinute();
currentTime=getMinute();
endTime=startTime+45;
}
}
else{
update();
}

return null;

private static void update() {
currentTime=getMinute();
System.out.println(currentTime);
}

public static void main(String[] args) {
startTime=getMinute();
currentTime=getMinute();
endTime=startTime+45;

Thread t=new Thread(clockf());
t.setDaemon(true);
t.start();
try {
Thread.currentThread().sleep(1000);//60000

} catch (InterruptedException e) {
System.err.println(e);
}



}

但这并不好。有没有办法让 clockf 方法只运行一次/分钟?或任何其他使计时器运行的方法?

最佳答案

虽然我没有完全理解你要做什么 TimerTimerTask应该为你做。以下代码必须稍作改进才能运行,但希望能说明原理:

long minute = 1000*60;

Timer timer1 = new Timer();
long delay1 = 45*minute;
Timer timer2 = new Timer();
long delay2 = 15*minute;
TimerTask tt1;
TimerTask tt2;

...

tt1 = new TimerTask()
{
public void run()
{
//do something and:
timer2.schedule(tt2, delay2);
}
};

tt2 = new TimerTask()
{
public void run()
{
//do something and:
timer1.schedule(tt1, delay1);
}
};

timer1.schedule(tt1, delay1);

关于Java如何写一个定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3100353/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com