控制台输入启动1,就开始定时任务1
控制台输入启动2,就开始定时任务2
控制台输入结束1,就停止定时任务1
控制台输入结束2,就停止定时任务2
代码如下(用的是Timer定时器):
public class MailSend {
private static int a = 0;
//定时任务
public void triger(String date1,String s,int j) throws InterruptedException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
try {
date = sdf.parse(date1);
} catch (ParseException e) {
e.printStackTrace();
}
TimerTask task = new TimerTask() {
@Override
public void run() {
// task to run goes here
if(a == j){
this.cancel();
System.out.println("结束任务");
}else{
System.out.println(sdf.format(new Date()) + "-------" + s);
}
}
};
Timer timer = new Timer();
long delay = 0;
long intevalPeriod = 60 * 1000;
// schedules the task to be run in an interval
timer.scheduleAtFixedRate(task, date, intevalPeriod);
}
public static void main(String[] args) throws InterruptedException {
while(true){
System.out.print("输入");
Scanner scan = new Scanner(System.in);
String read = scan.nextLine();
System.out.println("输入数据:"+read);
if(read.equals("启动1")){
new MailSend().triger("2019-05-05 14:35:00","sssssssssss",5);
}else if(read.equals("启动2")){
new MailSend().triger("2019-05-05 14:40:00","ddddddddddd",6);
}else if(read.equals("结束1")){
new MailSend().setA(5);
}else if(read.equals("结束2")){
new MailSend().setA(6);
}
}
}
}
缺点就是想要终止定时,this.cancel()会等到定时任务之前终止,不会立刻执行终止。