2010-11-21 3 views
8

Что является самым простым способом в Java для достижения многоядерных процессоров? И этим я имею в виду, чтобы конкретно указать, в каком ядре выполнить некоторые части проекта, поэтому добрые «нормальные» потоки Java не являются вариантом.Достижение многоядерности в Java - как?

До сих пор мне предлагался JConqurr (который представляет собой набор инструментов Eclipse для многоядерного программирования в Java), JaMP (который расширяет Java для OpenMP) и MPJ express, о которых я мало знаю. Какое из вышеперечисленных вы считаете лучшим, или у вас есть другие предложения? Было бы предпочтительнее как-то заучивать повышение/усиление производительности, но не эксклюзивное.

Любая помощь будет высоко оценена. Thanks, twentynine.

+5

Эта терминология («достижение многоядерности») используется где угодно? Я бы изменил этот вопрос на «Запуск потоков на конкретных ядрах на Java» – ripper234

+2

Я считаю, что термин «сродство к процессору» относится к ядрам, а также к процессорам. – ide

+0

Почему именно вам нужно иметь возможность сближения процессора для потоков? Почему бы не позволить JVM справиться с этими решениями? – Darien

ответ

0

Scala довольно популярен для этого. Он работает на JVM и имеет привязки для Java, чтобы объединить их.

+0

Дело в том, что я должен использовать Java. Никакие другие языки не допускаются. – twentynine

2

Несмотря на то, что на Java можно легко написать многопоточный код, в стандартной версии Java нет ничего, что в общем случае позволяет сообщать JVM или операционной системе, как планировать вашу программу.

Следовательно, вам нужно будет иметь код специально для вашей JVM и/или вашей операционной системы, и этот код не может выполняться на Java (если вы не погружаетесь в JNI или JNA). Внешние программы могут связывать процессы с процессором во многих версиях Unix (и, вероятно, с Windows), но я не думаю, что вы можете сделать это для отдельных потоков.

+0

Да, Java «слишком кросс-платформенный», чтобы поддержать это ... – khachik

+0

@khachik, я не верю, что это причина. Ознакомьтесь с функциями интеграции с настольными системами, которые появились с Java 6. В основном разработчики Java намеренно скрывали детали реализации из текущей программы. Это позволяет JVM оптимизировать способами, которые еще не предусмотрены, когда это происходит. –

Смежные вопросы