다중 스레드 코드에서 성능 문제를 디버깅하려고하는데 현재이 메서드를 실행중인 스레드 수를 인쇄하는 방법이 있는지 궁금합니다. 작업이 제출되고, 그래서 다음과 같이 구체적으로, 나는 가능한 ThreadPoolExecutor를 사용하고현재 메서드를 실행하는 스레드 수를 얻는 방법은 무엇입니까?
public void concurrentMethod(Object data) {
int numberOfThreadsExecutingThisMethodSimulataneously = //...?
System.out.println(numberOfThreadsExecutingThisMethodSimulataneously);
//method body...
}
:
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 메소드를 제공하고 후크 메소드에 대해 설명하므로 AtomicInteger를 사용하여 추적 할 수 있습니다. –