java定时任务的两种实现方式
生活随笔
收集整理的這篇文章主要介紹了
java定时任务的两种实现方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Timer
現在項目中用到需要定時去檢查文件是否更新的功能。timer正好用于此處。
用法很簡單,new一個timer,然后寫一個timertask的子類即可。
package comz.autoupdatefile; import java.util.Timer; import java.util.TimerTask; public class M { public static void main(String[] args) { // TODO todo.generated by zoer Timer timer = new Timer(); timer.schedule(new MyTask(), 1000, 2000); } } class MyTask extends TimerTask { @Override public void run() { System.out.println("dddd"); } }這樣,就可以在1秒鐘之后開始執行mytask,每2秒鐘執行一次。
當然,timer的功能也可以通過自己構造線程,然后在線程中用sleep來模擬停止一段時間,然后再執行某個動作。
其實,看一下timertask的源碼就立即可以知道,timertask就是實現了runnable接口的。也就是說,通過timer來間隔一段時間執行一個操作,也是通過一個線程來做到的。
【這樣就節省自己寫線程的時間啦】
二、Executors
JDK的java.util.concurrent中提供了大量的方法去控制一段代碼定時執行,標準的改寫上面的代碼如下:
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit;public class Test6 {public static void main(String[] args) {ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);scheduler.scheduleWithFixedDelay(new Runner(), 1, 2, TimeUnit.SECONDS);}}class Runner implements Runnable {public void run() {System.out.println("yours code");} }這樣,就可以在1秒鐘之后開始執行Runner,每2秒鐘執行一次。
scheduler下有很多的方法,達到的目的有:定時執行,執行完后一段時間再次執行;而Executors更有更多控制線程的方法,平時不可忽視。
三、總結
其實不管是用Timer還是使用Executors,都是創建了新的線程。
總結
以上是生活随笔為你收集整理的java定时任务的两种实现方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下实现脚本监测特定进程占用内存
- 下一篇: Linux中自动删除n天前日志