Я пытаюсь Tune нить, которая делает следующее:ThreadPoolExecutor - ArrayBlockingQueue ... ждать, прежде чем она удаляет элемент формирования очереди
Нить бассейн только с 1 нить [CorePoolSize =0, maxPoolSize = 1]
Очередь используется является ArrayBlockingQueue
Quesize = 20
BackGround:
Поток пытается прочитать запрос и выполнить операцию над ним.
ОДНАКО, в конечном итоге запросы увеличились настолько, что поток всегда занят и потребляет 1 процессор, что делает его ресурсоемкой.
Что я хочу сделать, вместо этого выборочно проверяйте запросы и обрабатывайте их. Другие запросы можно безопасно игнорировать.
Что мне нужно сделать, так это спящий режим «операция», так что для каждой задачи поток спит когда-то и освобождает процессор.
Quesiton:
Однако, мне было интересно, если есть способ использовать очереди, которая в основном сам спит на некоторое время, прежде чем он читает следующий элемент. Это было бы идеально, так как спящая задача в середине исполнения, и выполнение неполного исполнения просто не кажется мне лучшим.
Пожалуйста, дайте мне знать, если у вас есть какие-либо другие предложения, а также для выполнения задач
Спасибо.
Edit: Я добавил последующий вопрос here исправлен размер maxpool быть 1 [написано в спешке] .. спасибо тим за указание его.
На самом деле это не «ресурсный свиньи», есть много работы. Вы действительно хотите искусственно замедлить запросы? Почему запросы (клиенты?) Отправляются быстрее, чем их можно обработать? Это не является устойчивым. – AngerClown
Хорошая точка. Если клиенты делают много запросов, которые отклоняются из-за полной очереди, они тратят впустую процессор, который мог бы быть лучше сбалансирован между клиентами и исполнителем. Очередь - это буфер для «сглаживания» нагрузки с течением времени; отклонения должны быть редкими, а не рутинными. – erickson
Клиент не является специализированным клиентом реквестера в реальном смысле. У запрашивающего есть выделенный клиент, который масштабируется в соответствии с количеством запросов. Клиент, с которым я работаю, как дополнительный для ведения журнала, контролирует типы операций. После выборки все еще хорошо, чтобы получить изображение по запросам. Надеюсь, что это имеет смысл. – codeObserver