1

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

+1

Я думаю, что этот вопрос не является минусом. Хороший вопрос –

+0

Спасибо нивеш .... – Abhij

ответ

2

Если я правильно понял ваш вопрос, я думаю, что этот случай рассматривается в 2-е издание Джошуа Блоха из «Эффективное Java»:

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

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

0

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

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