2009-07-13 4 views
1

각 Thread.run()이 적절한 커널 스레드를 실행하도록 Thread 클래스를 사용하는 Java 프로그램을 실행하고 싶습니다. Java VM에 명령 행 매개 변수를 전달하여이를 수행 할 수있는 방법이 있습니까? Windows 컴퓨터에서 Java 1.5 SDK (및 jre1.5.0_18)를 사용하여 Eclipse를 실행하고 있습니다. -XX를 사용하여 시도 : + UseBoundThreads,하지만 작업 관리자는 두 코어가 동일한 코어 (다른 코어가 유휴 상태)에서 스레드를 실행하고있는 것 같습니다.Eclipse에서 Java VM을 사용하는 기본 스레드

감사합니다.

답변

2

Windows JVM은 항상 원시 스레드를 사용합니다. 그러나 각 스레드를 실행할 코어를 결정하는 것은 커널의 몫입니다. 2 개의 스레드를 시작하는 것이 2 개의 코어간에 공유된다는 보장은 없습니다.

덧붙여서 UseBoundThreads 옵션은 solaris 일 뿐이라고 생각합니다.

6

나는 스레드 클래스 A 적절한 커널 스레드를 실행에 같은 그 각 Thread.run() 결과를 사용하는 Java 프로그램 을 실행하고 싶습니다.

Thread.run()으로 전화를 걸면 별도의 스레드를 만들지 않고 모든 스레드를 순차적으로 주 스레드에서 실행합니다. 당신이해야 할 일은 Thread.start()으로 전화해서 새로운 스레드를 만들고 Thread.run()을 실행하게합니다.

+2

Heh, good catch :) – skaffman

+0

죄송합니다. Thread.run() : 저는 실제로 코드에서 Thread.start()를 호출하고있었습니다. 나는이 질문을 쓰는 동안 run()과 start()가 섞여있다. –

1

jvisualvm을 사용하여 실행중인 스레드와 사용중인 CPU의 양을 확인할 수 있습니다.

0

고마워요. 제가 올바른 대답을 알지 못하지만, 현재 Eclipse 1.6에서 Java 1.6은 필자가보고있는 코드 기반의 듀얼 코어에서 거의 두 배의 성능을 제공합니다 ... 또한, jvisualvm은 프로파일 러로서의 위대한 작품입니다. 감사합니다!

관련 문제