2012-07-25 241 views
0
class BeeperControl { 
    private final static ScheduledExecutorService scheduler = 
            Executors.newScheduledThreadPool(1); 

    public static void main(String[] args){ 
     beepForAnHour(); 
    } 

    public static void beepForAnHour() { 
     final Runnable beeper = new Runnable() { 
      public void run() { 
       System.out.println(「beep」); 
      } 
     }; 
     final ScheduledFuture beeperHandle = 
      scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); 

     scheduler.schedule(new Runnable() { 
      public void run() { 
       beeperHandle.cancel(true); 
      } 
     }, 60 * 60, SECONDS); 
    } 
} 

此代碼每10秒鐘蜂鳴一小時。我如何讓它每10分鐘一次嗶嗶聲。因爲它應該每10分鐘一直保持蜂鳴聲(不只是一小時)將代碼更改爲永久重複

+1

將它包裹在'while(true){}'裏面? – 11684 2012-07-25 09:11:27

+0

第1步:以可讀方式格式化您的代碼。 – 2012-07-25 09:11:41

+0

哪個更好.. schedulor或sleep ????????? – user1545477 2012-07-25 09:17:50

回答

3

您明確安排取消任務。如果您不想取消,則不要安排取消任務。

+0

謝謝.................... – user1545477 2012-07-25 09:16:07

+0

哪個更好.. schedulor或sleep ????????? – user1545477 2012-07-25 09:18:32

+0

調度程序更好。 – 2012-07-25 09:26:28

1

只刪除取消的第二個時間表。

+0

omg謝謝你:),..... – user1545477 2012-07-25 09:16:00

+0

非常歡迎你。 – MahdeTo 2012-07-25 09:16:26

+0

哪個更好.. schedulor或sleep ????????? – user1545477 2012-07-25 09:18:02

0

我建議:

public void run() { 
    while(true) { 
     System.out.println(「beep」); 
     Thread.sleep(10000); 
    } 
} 

+的;

  • 簡單
  • 如果你被打斷

-'s您可以跟蹤: - 你必須趕上InterruptedException的

如果你想停止:

  • 把代碼放在catch語句中停止/暫停,並說myThread.interrupt();停止,再次啓動它有點困難,您最好的選擇是創建一個新的線程(完全相同)。資訊:How to start/stop/restart a thread in Java?
  • 把一個if語句在while循環,檢查公共布爾isRunning,如果是假的,說continue;的複覈一遍又一遍,直到它真的一遍,把你的蜂鳴代碼在「道道通塊'。
+0

@Nandkumar哈哈,當我點擊編輯它顯示編輯頁面上的編輯,這正是我要做的! – 11684 2012-07-25 09:14:02

+0

因爲我想OP要使用ScheduledExecutorService恐怕這不是真的是他的問題的答案... – fvu 2012-07-25 09:15:50

+0

也許,但這不是在問題中說明。 – 11684 2012-07-25 09:16:20