2008-11-03 4 views
9

내 응용 프로그램은 많은 Java 스레드를 사용합니다. JVM (버전 5 및 6)이 Java 스레드를 기본 Windows 스레드에 매핑하는 방법을 신뢰할 수있는 방법으로 찾고 있습니다. 솔라리스 쓰레드에 매핑하는 문서가 있지만 윈도우는 알지 못합니다.Sun JVM은 Java 스레드를 Windows 스레드에 어떻게 매핑합니까?

Sun에서이 정보를 게시하지 않는 이유는 무엇입니까? 1 매핑하거나 -server 옵션으로, JVM에 따라 다릅니다 경우 등 등 작업 부하,

에 의해 나는 내가 신경 "가정"아니에요 알고

나는 1이 있는지 알고 싶어요 필자는 코드를 올바르게 작성해야하지만 많은 코드를 상속받습니다.

또한 Windows 스레드에 이름을 지정하는 방법을 알고 있습니까?

+0

1 : 1 스케줄링보다 진보 된 것이 있다면 놀랄 것입니다. – JesperE

답변

6

문서가 없지만 작업 관리자의 스레드 열에서 1 : 1을 기본 스레드로 매핑한다는 것을 꽤 쉽게 추측 할 수 있습니다 (먼저 작업 관리자에서 스레드 열을 활성화해야 함).).

오, 거의 잊어 버렸습니다. jdk src here을 다운로드하여 직접 볼 수 있습니다.

1

매핑은 플랫폼에 따라 다르지만 vm에 대한 플랫폼 스레드 간에는 흥미로운 comparison이 발견되었습니다. 결론은 당신이 알 필요가 없다는 것입니다. 당신이 아마 더 많은 관심을 갖고있는 것은 green threads에 대해 아는 것입니다 (당신이 이미 모른다면).

명명 질문 : constructor은 스레드의 이름을 지정할 수 있습니까? 아니면 그들 이름을 의미하고 일부 Windows 스레드 브라우저에서 그들의 이름을 볼 수 있습니까? 그것은 윈도우 JVM 내에서 할 불가능하거나 적어도 열심히처럼

0

How to name a Win32 thread

불행하게도,이 보인다.

+0

사용하려는 경우 항상 JNI 코드를 감쌀 수 있습니다. –

+0

Windows 스레드 ID를 찾는 데 어려움이있을 수 있습니다. JVM에서 반환 한 threadID와 일치하지 않습니다. 하지만, 제게 이것은 자바에서 처음부터 할 필요가없는 것 같습니다. –

+0

나는 최근에 Win32 AccessTokens를 만드는 JNI 코드를 다루었으며,이 토큰은 그들이 작성된 OS 스레드에서만 작동 할 수있다. –

0

JVM 사양은이 점에 관해서 엄격하게 말하지 않습니다. 자바 개발자를 플랫폼 개발자 (Windows, Linux 등)에 매핑하는 데 필요한 JVM 구현 자의 역할. 또한 Java 스레드와 OS 스레드 사이에 일대 일 매핑이 있다고 믿기 어렵습니다.

관련 문제