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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java定时器 并发_【java多线程与并发库】— 定时器的应用 | 学步园

發布時間:2024/9/27 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java定时器 并发_【java多线程与并发库】— 定时器的应用 | 学步园 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定時器的應用

1、? 定時器主要涉及到兩個類(java.util包中)

@-》public class Timer extendsObject

(一種工具,線程用其安排以后在后臺線程中執行的任務。可安排任務執行一次,或者定期重復執行。 )

@-->public abstract class TimerTask extendsObjectimplementsRunnable

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

2、Timer類的構造方法:

構造方法摘要

String?name)

創建一個新計時器,其相關的線程具有指定的名稱。

String?name, boolean?isDaemon)

創建一個新計時器,其相關的線程具有指定的名稱,并且可以指定作為守護程序運行。

與每個 Timer 對象相對應的是單個后臺線程,用于順序地執行所有計時器任務。

計時器任務應該迅速完成。如果完成某個計時器任務的時間太長,那么它會“獨占”計時器的任務執行線程。因此,這就可能延遲后續任務的執行,而這些任務就可能“堆在一起”,并且在上述不友好的任務最終完成時才能夠被快速連續地執行。

對 Timer 對象最后的引用完成后,并且 所有未處理的任務都已執行完成后,計時器的任務執行線程會正常終止(并且成為垃圾回收的對象)。但是這可能要很長時間后才發生。

默認情況下,任務執行線程并不作為守護線程 來運行,所以它能夠阻止應用程序終止。如果調用者想要快速終止計時器的任務執行線程,那么調用者應該調用計時器的

cancel 方法。

如果意外終止了計時器的任務執行線程,例如調用了它的 stop 方法,那么所有以后對該計時器安排任務的嘗試都將導致

IllegalStateException,就好像調用了計時器的 cancel 方法一樣。

此類是線程安全的:多個線程可以共享單個

Timer 對象而無需進行外部同步。

此類不 提供實時保證:它使用 Object.wait(long) 方法來安排任務。

實現注意事項:此類可擴展到大量同時安排的任務(存在數千個都沒有問題)。在內部,它使用二進制堆來表示其任務隊列,所以安排任務的開銷是 O(log n),其中 n 是同時安排的任務數。

實現注意事項:所有構造方法都啟動計時器線程。

方法摘要

void

int

void

TimerTask?task,

Date?time)

安排在指定的時間執行指定的任務。

void

TimerTask?task,

Date?firstTime, long?period)

安排指定的任務在指定的時間開始進行重復的固定延遲執行。

void

TimerTask?task, long?delay)

安排在指定延遲后執行指定的任務。

void

TimerTask?task, long?delay, long?period)

安排指定的任務從指定的延遲后開始進行重復的固定延遲執行。

void

TimerTask?task,

Date?firstTime, long?period)

安排指定的任務在指定的時間開始進行重復的固定速率執行。

void

TimerTask?task, long?delay, long?period)

安排指定的任務在指定的延遲后開始進行重復的固定速率執行。

3、TimerTask類的構造方法:

構造方法摘要

protected

方法摘要

boolean

abstract ?void

long

實際 執行的已安排 執行時間。

實例1:

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

public class TimerTest {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

//每隔10s打印"hello,honey!";

new Timer().schedule(new TimerTask(){

@Override

public void run() {

// TODO Auto-generated method stub

System.out.println("hello,honey!");

}

}, 10000);

while(true){

System.out.println(new Date().getSeconds());//打印當前秒數

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

實例2:

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

public class TimerTest {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

//每隔10s打印"hello,honey!";

new Timer().schedule(new TimerTask(){

@Override

public void run() {

// TODO Auto-generated method stub

System.out.println("hello,honey!");

}

}, 10000,3000);//10s后打印,以后每隔3s打印一次

/*while(true){

System.out.println(new Date().getSeconds());//打印當前秒數

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}*/

}

}

運行結果:

總結

以上是生活随笔為你收集整理的java定时器 并发_【java多线程与并发库】— 定时器的应用 | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。

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