我試圖調試多線程代碼中的性能問題,我想知道是否有一種方法可以打印出當前執行該方法的線程數。例如,假設我有以下幾點:如何獲得執行當前方法的線程數?
public void concurrentMethod(Object data) {
int numberOfThreadsExecutingThisMethodSimulataneously = //...?
System.out.println(numberOfThreadsExecutingThisMethodSimulataneously);
//method body...
}
具體地說,我使用的是ThreadPoolExecutor的,所以作業提交如下:
ExecutorService executor;
for (Object data : myData) {
executor.execute(() -> concurrentMethod(data));
}
那是什麼對於?也許在打印'Thread.currentThread()'的方法裏面有一個簡單的日誌就足夠了。 – elias
您可以保留一個靜態設置並在該方法的開頭添加線程名稱,並在最後刪除。 – lexicore
線程池是否有界? [API](https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html)提供了一些stat方法,並討論了hook方法,因此可能使用AtomicInteger進行跟蹤。 –