在实际开发过程中,可通过定时器的方法来自测异步回调接口,方便快捷。
/**
* @author rk.zhang
* @date 2018/11/1 10:53
* @note : 实现定时器的四种方式
*/
public class Test01 {
public static void main(String[] args) {
//timer1();
//timer2();
//timer3();
//timer4();
setService();
}
//java定时器
public static void timer1(){
System.out.println("即将输出指定内容");
Timer nTimer = new Timer();
nTimer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("------指定输出内容");
}
},3000);
}
public static void timer2(){
System.out.println("即将输出指定内容");
Timer nTimer = new Timer();
nTimer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("------指定输出内容");
}
},6000,2000);
}
public static void timer3(){
System.out.println("即将输出指定内容");
Timer nTimer = new Timer();
nTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("------指定输出内容");
}
},5000,1000);
}
public static void timer4() {
System.out.println("即将执行任务");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 10);
calendar.set(Calendar.MINUTE, 42);
calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
}
}, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行
}
/**
* 模拟异步调用
*/
public static void setService() {
ScheduledExecutorService service = Executors.newScheduledThreadPool(9);
service.schedule(new Runnable() {
@Override
public void run() {
//TODO 更新状态
Map<String, Object> params = new HashMap<>();
System.out.println("开始调用");
timer1();
}
}, 5, TimeUnit.SECONDS);
}