В приведенном ниже коде я представил DefaultEventExecutor, где выполняется фактическая вставка базы данных. Я сомневаюсь, что это действительно правильный путь, потому что в качестве Каналов будет столько DefaultEventExecutors. Может ли кто-нибудь помочь мне в этом?По умолчаниюEventExecutor поделился между каналами
public class SocketChannelInitializer extends ChannelInitializer<SocketChannel> {
final static Logger logger = Logger.getLogger("com.my.snapshot");
public ComboPooledDataSource cpds;
public SocketChannelInitializer(ComboPooledDataSource cpds) {
this.cpds = cpds;
}
@Override
public void initChannel(SocketChannel ch) throws Exception {
if (logger.isDebugEnabled()) {
logger.debug("New SocketChannel connection from " + ch.remoteAddress());
}
ChannelPipeline pipeline = ch.pipeline();
EventExecutor e1 = new DefaultEventExecutor();
// and then business logic.
pipeline.addLast("readTimeoutHandler", new ReadTimeoutHandler(200));
pipeline.addLast("decoder", new MyPacketHeaderDecoder());
/**
* Inserting in DB happens in single Thread (e1)
*
*/
pipeline.addLast(e1, "logic", new PacketDatabaseHandler(cpds));
}
}
Хорошо, вот что я подумал. –
У меня теперь есть ** один ** экземпляр DefaultEventExecutorGroup (3) или каналы. С 'jstack' я заметил, что эти 3 потока находятся в состоянии ожидания. Используются ли они циклически? –