0
如何在線程執行時檢索線程的ID,然後在線程完成時再次檢索線程的ID。在執行和完成時檢索線程ID? Java
從而按照它們在主線程中執行/完成的順序進行打印。
我正在使用forkjoinpool並執行一個可調用的類。
感謝
如何在線程執行時檢索線程的ID,然後在線程完成時再次檢索線程的ID。在執行和完成時檢索線程ID? Java
從而按照它們在主線程中執行/完成的順序進行打印。
我正在使用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();
}
}
乾杯,但我需要返回到主線程的ID打印那裏。 (我應該指定。) – Paradox
在這種情況下,您可以將這些信息放入任務的阻塞隊列中,並獲取這些值並在主線程中打印它們,但是如果主線程將等待某些要打印的數據到達,則它將被鎖定。 – dbf