2013-04-03 4 views
-1

Я должен начать работу над параллелизмом задач. Мое настоящее приложение - это не что иное, как реализация шаблона производителя, но я чувствую, что есть определенная степень, в которой можно реализовать параллелизм.Инженерно-технический подход

My Runtime.getRuntime.availableProcessors дают 24, на моей машине работает около 8 процессов java, работающих параллельно y, я примерно предполагаю, что каждый процесс получает около трех процессоров для работы. Я просмотрел эту статью http://codeidol.com/java/java-concurrency/Applying-Thread-Pools/Sizing-Thread-Pools/ как хедз-ап. Но я все еще стараюсь найти правильный подход к решению параллелизма. То, что приходит мне на ум, - это: - a) Определите количество процессоров на машине b) Определите использование ЦП на один Java-процесс c) Определите соотношение времени, в течение которого поток ожидает результат базы данных до времени где поток фактически использует данные Может ли кто-нибудь направить меня к хорошему pdf, чтобы я мог поэтапно подходить к разработке производительности?

ответ

0

Ваше предположение о том, что «Java использует все доступные процессоры», с большой вероятностью ошибочно. Помните, что JVM - это сам процесс, над которым работает ваш Bytecode, поэтому вы больше подвержены ограничениям ОС при использовании ресурсов, чем если бы вы выполняли эти программы в собственном коде.

+0

Я сказал в среднем 3 процессора/jvm процесса. Если в основной функции моего класса I Sysout Runtime.getRuntime.availableProcessors он может быть разным для разных вызовов, поэтому я принимаю число 3. – 100pipers

+0

Как операционная система, так и JVM (как правило, некоторые реализации могут не соответствовать) поставите ограничение на количество процессоров, каждый дискретный поток будет использоваться, поэтому тот факт, что они доступны, не означает, что они все привыкают. –

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