スレッドが実行されたときにスレッドの ID を取得し、完了したときに再度スレッドの ID を取得するにはどうすればよいでしょうか。
したがって、メインスレッド内から実行/完了の順序でそれらを印刷します。
forkjoinpool を使用して、呼び出し可能なクラスを実行しています。
ありがとう
スレッドが実行されたときにスレッドの ID を取得し、完了したときに再度スレッドの ID を取得するにはどうすればよいでしょうか。
したがって、メインスレッド内から実行/完了の順序でそれらを印刷します。
forkjoinpool を使用して、呼び出し可能なクラスを実行しています。
ありがとう
タスク クラスに次のようなものを追加する必要があります。
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());
}
});
Callable
内部で別の callableを実装して呼び出すラッパーを作成します。ただし、スレッド 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();
}
}