2015-08-31 99 views
1

停止循環執行我有像循環:而線程執行

for(final TestCase tc : tcPool) { 

       new Thread(new Runnable() { 
        @Override 
        public void run() { 
         runTCCmd(tc.createJavaClass()); 
        } 
       }).start(); 

      } 

我怎樣才能凍結時間(停止)循環而new Thread(...)執行?

我用ExecutorService之前,但它並沒有停止線程執行:

private ExecutorService executorService = Executors.newSingleThreadExecutor(); 

this.executorService.submit(new Runnable() { 
        @Override 
        public void run() { 
         runTCCmd(tc.createJavaClass()); 
        } 
       }); 
+1

在線程中聲明一個標誌,如boolean running = true ;.在運行方法中添加while(runnig),並在需要時運行= false假設 –

+2

ExecutorService情況下有一個答案:http://stackoverflow.com/a/1250655/1233521 – vzhilin

回答

2

嘗試

Thread t = new Thread(new Runnable() { 
    @Override 
    public void run() { 
     runTCCmd(tc.createJavaClass()); 
    } 
}); 
t.start(); 
t.join(); 
+1

如果_this_是OP的實際內容,那麼顯然整個shebang應該被替換爲'runTCCmd(tc.createJavaClass());'爲什麼有人會創建另一個線程,然後_unconically_等待那個線程在繼續之前死掉? –

+0

我也在想。也許只是爲了測試目的。 –

1

你爲什麼不只是使用一個線程執行? 它將按順序執行任務。

private ExecutorService executorService = Executors.newSingleThreadExecutor(); 
for(final TestCase tc : tcPool) { 
     executorService.submit(new Runnable() { 
      @Override 
      public void run() { 
       runTCCmd(tc.createJavaClass()); 
      } 
     }); 
} 
executorService.shutdown(); 
executorService.awaitTermination(shutdownTimeout, TimeUnit.MILLISECONDS)