У моего сервера есть два клиента разных типов, у которых есть другой формат сообщения, поэтому на сервере есть два сервера NioServerSocketChannelFactory, которые обрабатывают запросы клиентов с двумя типами соответственно. Эти два типа клиентов должны получить доступ к одному и тому же объекту в двух обработчиках NioServerSocketChannelFactory. Могу ли я поделиться тем же объектом OrderedMemoryAwareThreadPoolExecutor в двух ChannelPipelines?share ExecutionHandler в разных ChannelPipeline
, например:
Channels.pipeline(
concurrencyHandler,
new Handler1());
}
Channels.pipeline(
concurrencyHandler,
new Handler2());
}
Будет OrderedMemoryAwareThreadPoolExecutor заботиться о нити параллелизма, когда Handler1 & 2 доступа такого же объект?
Он использует объект канала, который не является ключом канала. – jean
Код, который я прочитал, является 3.3.1, getChildExecutorKey возвращает объект Channel. Trustin говорит, что OMATPE будет заботиться о синхронизации потоков, но я не нашел синхронизированное ключевое слово или что-то еще. Как это произошло? – jean
Он использует LinkedTransferQueue для этого, который использует CAS –