grpc-java использует исполнитель в своем ServerBuilder
, который, если он не определен методом builder.executor()
, по умолчанию использует статический кешированный пул потоков. Каково точное использование этого исполнителя? Он просто выполняет методы обработчика или делает это «что-то еще»?Каково точное использование исполнителя в серверном сервере grpc-java? Выполняет ли он только методы обработчика?
Также, как grpc определяет сетчатого работника EventLoopGroup
? В частности, я хочу знать, как рабочие потоки назначаются этой рабочей группе. Есть ли значение по умолчанию для количества потоков или оно зависит от количества ядер машины? Кроме того, в связи с вышеуказанным вопросом, как эти сетевые работники работают с исполнителем? Они обрабатывают только ввод/вывод - чтение и запись на канал?
Редактировать: Netty, по умолчанию создает (2 * количество ядер) рабочих потоков.
У gRPC есть рекомендуемый исполнитель для разных сценариев, так как настоятельно рекомендуется не использовать умолчания? – Matt
Да, используйте пул потоков фиксированного размера. Что-то вроде 'Executors.newFixedThreadPool (16)' –
благодарит Carl, поэтому подразумевается, что моя '* ServiceImplBase' должна быть потокобезопасной, если я добавлю один экземпляр' .addService (...) 'на мой сервер и имею несколько потоков отправка запросов? – Matt