2017-06-27 4 views
0

Ich versuche, einige Code nur 2 Mal mit einer Verzögerung von 500 Mikrosekunden zwischen jeder Ausführung ausgeführt werden.Stop ScheduledExecutorService, nachdem es zweimal ausgeführt wird?

Bisher habe ich die ScheduledExecutorService und ein int counter verfolgen verwendet, wie kann mal die ExecutorService mein Code ausgeführt hat, aber ich möchte wissen, ob dies ein guter Ansatz ist, und wenn es eine bessere Art und Weise:

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); 

} 

Antwort

2

Ich denke, die ExecutorService ist übertrieben. Wenn Sie nur einen normalen Thread verwenden, können Sie den Vorgang ausführen, den Ruhezustand ausführen und ihn erneut ausführen.

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

Ihre Lösung ist in der Tat viel Simplere. – Muddz

Verwandte Themen