2013-03-15 57 views
4

我剛開始學習如何使用接口,我試圖弄清楚如何每隔10秒打印一個特定的單詞(本例中爲「Howdy」)。我使用了TimerTaskTimer類來安排我的任務每10秒運行一次,但是我是否正確地做到了這一點?每X秒打印一個字

import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.Timer; 
import java.util.*; 


public class Howdy2 { 

    class PrintHowdy extends TimerTask { 
     public void run() { 
      System.out.println("Howdy!"); 
     } 
    } 

    public static void main(String[] args){ 
    Timer timer = new Timer(); 
    timer.schedule(new PrintHowdy(), 10000); 

    } 


} 
+1

Swing用於UI。你想要一個ScheduledThreadPoolExecutor。 – SLaks 2013-03-15 17:41:54

+2

你的代碼看起來不錯,但不是swing,你需要使用這些庫來完成定時器和定時器任務:'java.util.Timer','java.util.TimerTask' – Cemre 2013-03-15 17:52:52

回答

3

像這樣的東西應該做的伎倆,並且不需要使用的TimerTimerTask

public class Test 
{ 
    public static void main(String... args) 
    { 
     Thread thread = new Thread() 
     { 

      public void run() 
      { 
       while (true){ 
        System.out.println("Hello World"); 
        try 
        { 
         Thread.sleep(1000); // 1 second 
        } catch (Exception e) 
        { 
         e.printStackTrace(); 
        } 
       } 
      } 
     }; 
     thread.start(); 
    } 
} 
+1

再次感謝你,這真的幫助了我! – user2012891 2013-03-15 18:04:28

0

這樣的事情,

public static void main(String[] args){ 
    while(true) { 
new PrintHowdy().run(); 
Thread.sleep(10000) 
} 

    } 
+0

謝謝,真的有幫助!現在正在運行! – user2012891 2013-03-15 17:55:18

+0

@ user2012891您可以通過點擊我的答案旁邊的複選標記來將其設置爲正確的答案。謝謝 – Austin 2013-03-15 17:55:47

+0

@ user2012891你還應該讚揚答案的答案,因爲我的評論(我剛剛做出答案),答案本來是我的答案。 – syb0rg 2013-03-15 17:56:56

0

在這幾樣解決方案,您還應該考慮停止給定條件的流量情況;

public class TestExecution02 implements Runnable { 

     public boolean doLoop = true; 

     public void run() { 
       //------ 
      while(doLoop) { 
       try { 
        Thread.sleep(10000); // 10 second 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       // do your job until it is closed 
      } 

      System.out.println("Thread closed !"); 
     } 


     public static void main(String[] args) { 

      TestExecution02 testExecution = new TestExecution02(); 
      Thread myThread = new Thread (testExecution); 
      myThread.start(); 

      // do something..... 
      testExecution.doLoop = false; 

     } 
    } 
+0

已經給出了類似的答案,重新發布它並沒有增加任何價值。 -1。 – syb0rg 2013-03-16 15:33:16