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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

定时执行java程序_如何让Java程序定时运行

發布時間:2024/9/27 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定时执行java程序_如何让Java程序定时运行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于項目開發的需要,必須實現讓一個Java程

序定時運行。比如,我的項目中,有一個網絡蜘蛛,需要從互聯網上抓取數據,與其配合,有另一個程序來對新抓取的頁面進行索引的創建,由于數據源更新頻率不

高,我們不可能讓蜘蛛無休無止地工作,或者忙等待新數據的產生,那樣只能造成浪費,而且非常地不禮貌,所以最理想的情況是,讓它每隔一個小時運行一次,這

樣一天也就運行不了幾次。

那么如何才能實現讓一個Java程序定時運行呢?Java基本類庫里面,提供了兩個工具供我們使用,它們是java.util.Timer和java.util.TimerTask。

Timer是一個對象,這個對象在初始化之初,會創建一個后臺進程(TimerThread),同時創建一個任務隊列(TaskQueue),然后

后臺進程開始檢測TaskQueue中是否存在等待調度的任務,如果存在,就運行之,如果不存在,就等待(Object.wait())。

對于程序員可見的類是Timer和TimerTask,TimerTask是一個抽象類,是能夠被Timer所調度的一種對象,所有希望定時執行的任務,只要實現TimerTask類即可,然后使用Timer的schedule方法,給定一定的參數,即可實現定時執行,或者周期執行。

schedule方法的本質,是將一個TimerTask對象添加到了TaskQueue中,這個TaskQueue是一個堆(可以動態增長),可以管理很多的Task。

Timer的本質,就是一個線程,按照指定的時間順序,來順次執行一個又一個的任務,根據這種性質,我們可以知道,Timer實現的定時不可能準

確,而且,還會收到任務本身耗費時間的干擾。如果前一個任務執行時間過長,超過后一個任務的啟動時間,則后一個任務的啟動時間必然要順延。所以,這種方

法,只能用于,任務短小,且對時間精度要求不高的語境。

Timer是線程安全的,可以實現并發訪問。

總結

以上是生活随笔為你收集整理的定时执行java程序_如何让Java程序定时运行的全部內容,希望文章能夠幫你解決所遇到的問題。

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