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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java延时设置

發布時間:2023/12/29 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java延时设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
延時執行

????????間隔某段時間之后,再去執行某段代碼,實現這種結果有兩種方式:

?1)使用Sleep方法,就是去新建一個線程,然后里邊放一個Thread.sleep()方法,這也是比較通俗的做法。

?????????new Thread(){
????????????public void run(){
???????????????try {
??????????????????Thread.sleep(5000);
??????????????????System.out.println("love");
???????????????} catch (InterruptedException e) { }
????????????}
?????????}.start();?????//這種內部匿名類的寫法,快速生成一個線程對象,也有利于快速垃圾回收

?????????但在main方法里直接加入Thread.sleep(),是對main線程的休眠;另一種錯誤的方法是把Thread.sleep放在一個方法內,而這個方法也是在main方法體內調用,與前者結果一樣。

???????當然也可以使用 Java API 提供的Timer類,來實現。如下代碼所示:

public class TimerDemo {??
??public static void main(String[] args) {
?????final Timer timer=new Timer(); TimerTask task=new TimerTask(){
????????public void run(){
????????????System.out.println("計時任務");
???????????//timer.cancel();?????????終止此計時器,丟棄所有當前已安排的任務。這不會干擾當前正在執行的任務(如果存在)。一旦終止了計時器,那么它的執行線程也會終止,并且無法根據它安排更多的任務。注意,在此計時器調用的計時器任務的 run 方法內調用此方法,就可以絕對確保正在執行的任務是此計時器所執行的最后一個任務。?
???????????}
???????};
?????
???????timer.schedule(task,5000, 2000);???//這個命令就是5秒鐘之后執行TimerTask里邊的內容,后邊的執行時間間隔為2秒鐘。
????}
}

????????通過調試發現,創建一個Timer對象,就會創建一個main線程之外的獨立子線程程序,來專門執行計時器里的任務,而任務也被理解成為對象:TimerTask,這也體現了JAVA中一切皆是對象的理念。一個Timer里即使有多個TimerTask對象,也只會開啟一個線程來應付。簡單的時間延遲還是推薦用第一種方案,當然如果有間隔性的執行,只能用第二種。如果硬要第一種方案實現間隔性的執行,只能引入線程池來解決,那樣就殺雞用牛刀了。

???????2)現在SUN推出新的解決方案,beepForAnHour設置了 ScheduledExecutorService?,在 1 小時內每 10 秒鐘蜂鳴一次:

import static java.util.concurrent.TimeUnit.SECONDS;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
class BeeperControl {
???private final ScheduledExecutorService?scheduler =
??????Executors.newScheduledThreadPool(1);??//創建一個線程池,它可安排在給定延遲后運行命令或者定期地執行。池中所保存的線程數為1個,即使線程是空閑的也包括在內。

???public void beepForAnHour() {
???????final Runnable beeper = new Runnable() {
???????????????public void run() { System.out.println("beep"); }
???????????};
???????final ScheduledFuture

參考http://blog.sina.com.cn/s/blog_80dbc63e0101efbq.html

總結

以上是生活随笔為你收集整理的java延时设置的全部內容,希望文章能夠幫你解決所遇到的問題。

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