2012-05-14 7 views
0

スレッドが実行されたときにスレッドのIDを取得する方法と、完了したスレッドを再度取得する方法はありますか。したがって、メインスレッド内からそれらの実行/終了の順に印刷実行時および完了時にスレッドIDを取得していますか? Java

私はforkjoinpoolを使用して、呼び出し可能クラスを実行しています。 Callableを実装し、別の呼び出し可能な内部を呼び出すラッパーを作成

executorService.submit(new Runnable() { 
      @Override 
      public void run() { 
       System.out.println("Running task in" + Thread.currentThread().getId()); 
       <your code> 
       System.out.println("Finished task in" + Thread.currentThread().getId()); 
      } 
     }); 

答えて

1

。しかし、スレッドIDを取得して、必要な処理を行います(例:

)。
class ThreadTrackingCallable<V> implements Callable<V> { 
    private Callable<V> payload; 
    ThreadTrackingCallable(Callable<V> payload) { 
     this.payload = payload; 
    } 
    V call() throws Exception { 
     jobStarted(getCurrentThreadId()); 
     V result = payload.call(); 
     jobEnded(getCurrentThreadId()); 
     return result; 
    } 

    private int getCurrentThreadId() { 
     return Thread.currentThread().getId(); 
    } 
} 
+0

乾杯しますが、そこに印刷するためにIDをメインスレッドに返す必要があります。 (私は指定の必要があります。) – Paradox

+0

をこの場合では、タスクからキューを遮断するには、この情報を入れて、これらの値を取得し、メインスレッドでそれらを印刷しますが、印刷が到着すると、メインスレッドがいくつかのデータまで待機するかどうか、それがロックされますすることができます。 – dbf

1

:あなたはあなたのタスククラスにこのような何かを追加する必要があり

おかげ

関連する問題