本文介绍了如何在特定时间安排任务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个java调度程序的问题,我的实际需要是我必须在特定时间启动我的进程,我将在某个时间停止,我可以在特定时间启动我的进程但我无法阻止我的进程某些时候,如何指定进程在调度程序中运行多长时间(这里我不会放入),任何人都有建议。
i have one problem with java scheduler,my actual need is i have to start my process at particular time, and i will stop at certain time ,i can start my process at specific time but i can't stop my process at certain time ,how to specify the process how long to run in scheduler,(here i will not put while ) any one have suggestion for that.
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
}
}
推荐答案
您可以使用 ScheduledExecutorService
计划,一个运行任务,一个运行任务 - 请参见下面的简化示例:
You could use a ScheduledExecutorService
with 2 schedules, one to run the task and one to stop it - see below a simplified example:
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();
}
};
}
这篇关于如何在特定时间安排任务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!