您将如何在线程执行时检索线程的 id,然后在其完成时再次检索它。
因此从主线程中按照执行/完成的顺序打印它们。
我正在使用 forkjoinpool 并执行一个可调用的类。
谢谢
您将如何在线程执行时检索线程的 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
并调用内部另一个可调用对象的包装器。但也检索线程 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();
}
}