gpt4 book ai didi

java - 如何在特定时间安排任务?

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

我有一个 java 调度程序问题,我的实际需要是我必须在特定时间启动我的进程,我将在特定时间停止,我可以在特定时间启动我的进程但我不能停止我的进程某个时间,如何指定进程在调度程序中运行多长时间,(这里我不会放 while )任何人对此都有建议。

import java.util.Timer;
import java.util.TimerTask;
import java.text.SimpleDateFormat;
import java.util.*;
public class Timer
{
public static void main(String[] args) throws Exception
{

Date timeToRun = new Date(System.currentTimeMillis());
System.out.println(timeToRun);
Timer timer1 = new Timer();
timer1.schedule(new TimerTask()
{
public void run()
{

//here i call another method
}

} }, timeToRun);//her i specify my start time


}
}

最佳答案

您可以使用具有 2 个计划的 ScheduledExecutorService,一个用于运行任务,一个用于停止它 - 请参见下面的简化示例:

public static void main(String[] args) throws InterruptedException {
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);

Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("Starting task");
scheduler.schedule(stopTask(),500, TimeUnit.MILLISECONDS);
try {
System.out.println("Sleeping now");
Thread.sleep(Integer.MAX_VALUE);
} catch (InterruptedException ex) {
System.out.println("I've been interrupted, bye bye");
}
}
};

scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS); //run task every second
Thread.sleep(3000);
scheduler.shutdownNow();
}

private static Runnable stopTask() {
final Thread taskThread = Thread.currentThread();
return new Runnable() {

@Override
public void run() {
taskThread.interrupt();
}
};
}

关于java - 如何在特定时间安排任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794313/

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