定时任务线程的使用
实现定时任务线程有如下三种方式:
①普通线程死循环
/** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果,这样可以快速简单的实现 */ Thread thread = new Thread(new Runnable() { @Override public void run() { while(true) { System.out.println("普通线程执行中......"); try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } } }); thread.start();
②使用定时器timer
/** * 与第一种方式相比: * 优势 1:当启动和取消任务时可以控制 * 优势 2:第一次执行任务时可以指定你想要的delay时间 * 在实现时,Timer类可以调度任务,TimerTask则是通过在run()方法里实现具体任务。 * Timer实例可以调度多任务,它是线程安全的。 * */ TimerTask task = new TimerTask() { @Override public void run() { System.out.println("timer线程执行中......"); } }; Timer timer = new Timer(); timer.scheduleAtFixedRate(task, 5000, 1000);
③使用定时调度线程池ScheduledExecutorService
Runnable runnable = new Runnable() { @Override public void run() { System.out.println("定时任务线程执行中......"); } }; ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor(); service.scheduleWithFixedDelay(runnable, 5000, 500, TimeUnit.MILLISECONDS);