使用ScheduledThreadPoolExecutor
实现定时任务 ,如下样例,定时输出系统时间,每隔两秒执行一次。 Thread.sleep作用是线程执行的时间,假如处理业务时间是10秒
public static void main(String[] args) {
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2);
executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println(DateFormatUtils.format(System.currentTimeMillis(), "HH:mm:ss SSS"));
}
}, 0, 2, TimeUnit.SECONDS);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
executor.shutdown();
}
//10秒之内会输出5次系统时间,每隔两秒执行一次。
//或者使用如下方式
public static void main(String[] args) {
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2);
executor .scheduleAtFixedRate(new Runnable() {
int i = 0;
@Override
public void run() {
System.out.println("执行"+i++);
//可以对业务的返回结果进行判断是否结束该线程。
//适用于不知道业务处理的时间
if(i==10){
executor .shutdown();
}
}
},0,1000, TimeUnit.MILLISECONDS);
}