Использование многопоточного процессора java

58
4

У меня есть приложение, которое развернуто в tomcat 6
В этом приложении я создал thread class который извлекает 1000 записей из таблицы и обрабатывает их и хранит в 4 разных таблицах в DataBase.
Я запускаю по два threads одновременно, чтобы защитить процесс от deadlock.
Есть ли способ schedule these threads соответственно моему cpu utilization.
то есть. Если там нет процессора, новый поток не будет создан.

спросил(а) 2012-03-01T10:08:00+04:00 8 лет, 8 месяцев назад
1
Решение
72

Если я правильно понял вашу проблему, я думаю, что это дело рассматривается в Joshua Bloch, второе издание "Эффективная Java":

Если сервер так сильно загружен, что все его процессоры полностью используются, и придет больше задач, будет создано больше потоков, что только ухудшит ситуацию. Таким образом, на сильно загруженном производственном сервере вам гораздо удобнее использовать Executors.newFixedThreadPool, который дает вам пул с фиксированным количеством потоков или напрямую с помощью класса ThreadPoolExecutor для максимального контроля.

Хотя я еще не пробовал, использование Executors кажется отличной идеей.

ответил(а) 2012-03-01T10:25:00+04:00 8 лет, 8 месяцев назад
42

Невозможно обнаружить загрузку процессора с помощью чистого кода Java. но вы можете вызвать Runtime.getRuntime(). exec ("top"), затем проанализировать результат вводаStream, чтобы найти загрузку процессора. если он перегружен, не запускайте новый поток.

ответил(а) 2012-03-01T10:55:00+04:00 8 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема