2017-06-27 12 views
0

私は各実行の間に500マイクロ秒の遅延で2回だけ実行されるいくつかのコードを持つことを試みています。2回実行した後、ScheduledExecutorServiceを停止しますか?

は、これまでのところ、私は時間がExecutorServiceが私のコードを実行していることか追跡するScheduledExecutorServiceint counter使用しているが、私はこれは良いアプローチであるかどうかを知りたいとのより良い方法がある場合:

private void dingdong() { 

    ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor(); 
    exec.scheduleAtFixedRate(new Runnable() { 
     int count; 

     @Override 
     public void run() { 
      count++; 

      //TODO operation 

      if (count == 2) { 
       exec.shutdownNow(); 
      } 
     } 
    }, 0, 500, TimeUnit.MICROSECONDS); 

} 

答えて

2

私はExecutorServiceが過剰だと思う。通常のスレッドを使用するだけで、操作が実行され、スリープして再び実行できます。

new Thread(() -> { 
    doTheThing(); 
    TimeUnit.MICROSECONDS.sleep(500); 
    doTheThing(); 
}).start(); 
+0

あなたの解決策は確かに単純です。 – Muddz

関連する問題