В нашем многопоточном Java приложение, мы используем LinkedBlockingDeque отдельный экземпляр для каждого потока, предположим, темы (c1, c2, .... C200)LinkedBlockingDeque.take() - отдельный экземпляр в потоке
Темы T1 & T2 принимает данные из сокета &, добавляет объект в конкретный потребительский Q от c1 до c200.
Бесконечный цикл внутри прогона(), который вызывает LinkedBlockingDeque.take()
В нагрузку запустить использование процессора для самого javae.exe составляет 40%. Когда мы суммируем другой процесс в системе, общее использование ЦП достигает 90%.
Используя JavaVisualVM бег() принимает больше ресурсов процессора, и мы заподозрить LinkedBlockingDeque.take()
Так пытавшихся альтернативы, как thread.wait и уведомления и Thread.Sleep (0), но без изменений.
Причина, по которой каждый потребитель, имеющий отдельный Q для двух причин, 1.There может быть больше, чем один запрос потребителя c1 от T1 или T2 2.Если мы сбрасывать все REQ в одном д, времени для Seach c1 до c200 будет больше, и критерии поиска будут расширяться. 3.And пусть потребитель имеет отдельный Q для обработки запросов тира
Попытки уменьшить загрузку процессора и нуждается в ваших входах ...
SD
Благодарим за отзыв, 1. сообщения будут обработаны по запросу. не более 200 сообщений в секунду. 2 процессора. Если для потребителя нет сообщения, то LinkedBlockingDeque.take() вызывается для блокировки до получения сообщения. 2) Сообщение содержит уникальные идентификаторы для конкретного потребителя. для других двух точек понятия не имею. но увидеть. – user1517020
Для такой низкой скорости передачи сообщений маловероятно, что настройка политики связи может иметь какой-либо эффект. Однако я бы попробовал следующий вариант: одиночная очередь сообщений, 1 или 2 потребительских потока, читаемых из очереди, потребители представлены как объекты (а не потоки) методом void processMessage (Message m). Потребительские потоки принимают сообщения и помещают их в объекты-потребители, выбранные по содержимому сообщения. При использовании 2 потоков дополнительные меры предосторожности требуют не одновременного доступа к одному и тому же объекту-потребителю (классическая версия для модели актера): например, имеют дополнительную очередь для каждого потребителя. –
Спасибо.с единой общей очередью каждый потребитель будет обрабатывать данные. какова максимальная скорость сообщения, которую мы можем использовать с этим типом дизайна. – user1517020