Использование многопоточного процессора java
У меня есть приложение, которое развернуто в tomcat 6
В этом приложении я создал thread class
который извлекает 1000 записей из таблицы и обрабатывает их и хранит в 4 разных таблицах в DataBase
.
Я запускаю по два threads
одновременно, чтобы защитить процесс от deadlock
.
Есть ли способ schedule these threads
соответственно моему cpu utilization
.
то есть. Если там нет процессора, новый поток не будет создан.
Если я правильно понял вашу проблему, я думаю, что это дело рассматривается в Joshua Bloch, второе издание "Эффективная Java":
Если сервер так сильно загружен, что все его процессоры полностью используются, и придет больше задач, будет создано больше потоков, что только ухудшит ситуацию. Таким образом, на сильно загруженном производственном сервере вам гораздо удобнее использовать Executors.newFixedThreadPool, который дает вам пул с фиксированным количеством потоков или напрямую с помощью класса ThreadPoolExecutor для максимального контроля.
Хотя я еще не пробовал, использование Executors кажется отличной идеей.
Невозможно обнаружить загрузку процессора с помощью чистого кода Java. но вы можете вызвать Runtime.getRuntime(). exec ("top"), затем проанализировать результат вводаStream, чтобы найти загрузку процессора. если он перегружен, не запускайте новый поток.
Еще в рубрике
- Вопросы
- Batch-processing
- Использование многопоточного процессора java