日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java定时任务的两种实现方式

發布時間:2023/12/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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定时任务的两种实现方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。