Java 원시 스레드를 사용하여 스레드가 실행중인 프로세서 (단일 시스템 또는 다중 시스템 중 하나)를 찾는 방법이 있습니까? 그렇지 않다면 도움이 될만한 라이브러리가 있습니까?프로세서에서 실행중인 Java 스레드는 무엇입니까?
답변
필자는 그러한 호출에 대해 들어 본 적이 없으며 실제로 필요하지 않으므로 의심 스럽습니다. 추가 플랫폼 관련 코드가 필요합니다.
JVM의 스레드 스케줄러는 JVM에 따라 다르므로 '보편적 인'솔루션이 없습니다. 내가 아는 한 즉시 사용할 수있는 것은 없지만 아마도 다음을 사용합니다.
- Sun JVM;
- Solaris - 또는 Mac의 경우 으로 표시됩니다. Tom Hawtin - tackline;
- DTrace.
당신은 약간의 행운이있을 수 있습니다 :
- 추적
args[3]
는 AS가있는thread-start
프로브, - "네이티브/OS 스레드 ID는이 호스트 운영 체제에 의해 할당 된 ID입니다." Solaris 전용 유틸리티를 사용하여 기본/OS 스레드 ID를 CPU에 매핑하십시오.
dtrace는 Mac OS X에서도 사용할 수 있습니다 (JRE는 시대에 뒤떨어질 것입니다). –
감사합니다. 업데이트 된 게시물. –
잘못된 추상화 계층.
프로그램은 스레드로 수행해야 할 작업을 나누어서 스케줄링을 위해 JVM에 제출하는 것에 관심을 가져야합니다. 스레드 (JVM 또는 기본 운영 체제 또는 그와 관련하여 문제가되는 사용자) 일정과 스레드가 실행되는 CPU/코어가 최소한 환경을 위해 작성된 프로그램의 경우 프로그램 디자인의 요소가되어서는 안됩니다 자바처럼.
OS는 다른 시간에 다른 프로세서의 스레드를 예약합니다. 따라서 각 순간에 각 스레드가 실행중인 위치의 스냅 샷을 얻더라도 밀리 초 내에 만료 될 수 있습니다.
해결하려는 문제는 무엇입니까? 아마 당신이 이것을 알 필요없이 원하는 것을 할 수 있습니다.
답장을 보내 주셔서 감사합니다. 내가 더 걱정해야 할 것은 스레드의 CPU 사용량에 관한 것입니다. 이것은 호기심에서 물어 본 질문 일뿐입니다. –