Собственные потоки, использующие Java VM в Eclipse - PullRequest
1 голос
/ 13 июля 2009

Я хотел бы запустить программу на Java, использующую класс Thread, чтобы каждый Thread.run () приводил к запуску правильного потока ядра. Есть ли способ достичь этого, передав некоторый параметр командной строки в Java VM? Я использую Eclipse с использованием Java 1.5 SDK (и jre1.5.0_18) на компьютере с Windows. Я пытался использовать -XX: + UseBoundThreads, но диспетчер задач, похоже, запускает оба потока (я использую двухъядерный компьютер) на одном и том же ядре (другое ядро ​​не используется).

Спасибо.

Ответы [ 4 ]

6 голосов
/ 13 июля 2009

Я хотел бы запустить программу на Java, использующую класс Thread, чтобы каждый Thread.run () приводил к запуску соответствующего потока ядра.

Если вы вызываете Thread.run()вы вообще не создаете отдельные потоки, вы выполняете все последовательно в основном потоке.То, что вам нужно сделать, это вызвать Thread.start(), который создаст новый поток и заставит его выполнить Thread.run().

2 голосов
/ 13 июля 2009

Windows JVM всегда использует собственные потоки. Однако ядро ​​должно решить, на каком ядре запускать каждый поток. Абсолютно нет гарантии, что запуск двух потоков будет распределен между двумя ядрами.

Кстати, я думаю, что опция UseBoundThreads предназначена только для Solaris, но я не слишком уверен в этом.

1 голос
/ 13 июля 2009

Вы можете присоединиться с помощью jvisualvm, чтобы увидеть, какие потоки работают и сколько процессоров они используют.

0 голосов
/ 20 июля 2009

Спасибо, ребята ... хотя я не знаю правильного ответа, в настоящее время Java 1.6 в Eclipse дает мне почти вдвое большую производительность на моем двухъядерном ядре для кодовой базы, на которую я смотрю ... также jvisualvm отлично работает как профилировщик .. спасибо!

...