国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java Timer的使用筆記

2019-11-14 22:50:02
字體:
來源:轉載
供稿:網友
java Timer的使用筆記

Timer: 一種線程設施,用于安排以后在后臺線程中執行的任務。 可安排任務執行一次,或者定期重復執行。

通俗點說就是設定一個時間去執行一次或者重復執行某個任務,例如可以定時提醒用戶去激活軟件,或者該終止軟件的繼續使用

TimerTask:由 Timer 安排為一次執行或重復執行的任務。

該類是實現了Runnable接口

列子:

1.每隔一秒輸出當前時間

  (1)首先創建了一個Timer計時器對象,這里使用了Timer(String name)的構造函數

  (2)利用Calendar創建一個開始執行的時間

  (3)調用Timer類的schedule方法,執行任務。這里給出的Date time參數如果小于當前時間,則會立即執行。(備注:因為schedule方法有很多重載形式,我這里不一一列出,可自行查看API文檔)

  (4)重寫TimerTask中的Run方法

public class TimerTest {public static void main(String[] args) {/* * 創建Timer對象: 一種線程設施,用于安排以后在后臺線程中執行的任務。 可安排任務執行一次,或者定期重復執行。          *  */Timer tm = new Timer("MyThread");/* * 安排指定的任務 */Calendar cal = Calendar.getInstance();cal.set(2015, 1, 1, 13, 40, 00);tm.schedule(new TimerTask() {@Overridepublic void run() {                 //輸出線程的名稱,其值為  MyThread                System.err.PRintln(Thread.currentThread().getName());while (true) {  try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}/* * 輸出每秒時間 */SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss");String time = sdf.format(new Date());System.err.println(time);}}}, cal.getTime(), 1000);}}

2. 守護線程

  主要是解釋一下

  (1)要開啟守護線程,應先置于true

  (2)守護線程的生命周期,當前臺線程已經結束時,守護線程也跟隨結束,里面的內容也將不會執行

  (3)這里的執行結果中,afeter sleep......不會被執行。因為sleep使該線程放棄了CPU的使用權

  (4)這里傳入的時間參數為new Date(),即表明是立即執行,所以守護線程的名稱和Before sleep......會被打印,

    如果,傳入的參數為1000,也就是1秒鐘,那么守護線程的名稱和Before sleep......也將不會被打印,因為JVM已經認為沒有線程可執行了

public class TimerDaemon_1 {    public static void main(String[] args) {        //打印主線程名稱        System.out.println(Thread.currentThread().getName()+"............");    //默認值為false        final Timer tr = new Timer("MyThread", true);        tr.schedule(new TimerTask() {            @Override            public void run() {                System.out.println(Thread.currentThread().getName());                System.out.println("Before sleep ............");                try {                    Thread.sleep(1000);// 這里讓該線程休眠1秒                } catch (InterruptedException e) {                    e.printStackTrace();                }                System.out.println("After sleep..............");            }//這里的new Date()表示了立即執行        }, new Date());    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 樟树市| 夏邑县| 北流市| 内黄县| 南涧| 镇远县| 莒南县| 舒城县| 通化市| 普格县| 镇原县| 休宁县| 当雄县| 卢龙县| 大安市| 灵丘县| 金坛市| 黄浦区| 黔东| 金阳县| 老河口市| 安乡县| 全椒县| 泸州市| 阿巴嘎旗| 长武县| 襄樊市| 颍上县| 柳州市| 普洱| 嵊泗县| 二连浩特市| 湘西| 墨玉县| 新平| 台南市| 颍上县| 黔江区| 文登市| 兴隆县| 即墨市|