程序调度任务在系统中比较常见,比如月底生成考勤信息,银行生成每月账单,这些都需要调度任务进行处理,如何进行处理呢?市面上成熟的中间件比较多,在这里我给大家介绍的是用原生方法来实现。
一、多线程
/**
* 多线程处理
*
* @param args
*/
public static void main(String[] args) {
final long timeInterval = 1000;
Runnable runnable = () -> {
while (true) {
System.out.println(LocalTime.now() + " test");
try {
//todo:something
Thread.sleep(timeInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
二、timer对象
/**
* 使用timer对象来实现
*
* @param args
*/
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(LocalTime.now() + " test");
//todo:something
}
}, 1000, 2000);//一秒后开始调度,每2秒执行一次
}
三、线程池
/**
* 通过使用线程池
*
* @param args
*/
public static void main(String[] args) {
ScheduledExecutorService service = Executors.newScheduledThreadPool(5);
service.scheduleAtFixedRate(() -> {
//todo:somethings
System.out.println(LocalTime.now() + Thread.currentThread().getName());
}, 1, 2, TimeUnit.SECONDS);
}