0

スレッドが実行されたときにスレッドの ID を取得し、完了したときに再度スレッドの ID を取得するにはどうすればよいでしょうか。

したがって、メインスレッド内から実行/完了の順序でそれらを印刷します。

forkjoinpool を使用して、呼び出し可能なクラスを実行しています。

ありがとう

4

2 に答える 2

1

タスク クラスに次のようなものを追加する必要があります。

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());
            }
        });
于 2012-05-14T09:16:16.737 に答える
1

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();
    }
}
于 2012-05-14T09:18:46.037 に答える