Вы смотрели пример кода на сайте Netty ? TelnetServer , похоже, делает то, о чем вы говорите. Фабрика создает новые обработчики всякий раз, когда получает соединение. Потоки из Executors
будут использоваться при каждом новом подключении. Вы можете использовать любой пул потоков и исполнитель там, я подозреваю:
// Configure the server.
ServerBootstrap bootstrap = new ServerBootstrap(
new NioServerSocketChannelFactory(
Executors.newCachedThreadPool(), << change
Executors.newCachedThreadPool())); << change
// Configure the pipeline factory.
bootstrap.setPipelineFactory(new TelnetServerPipelineFactory());
// Bind and start to accept incoming connections.
bootstrap.bind(new InetSocketAddress(8080));
TelnetServerHandler затем обрабатывает отдельные результаты.
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
// Cast to a String first.
// We know it is a String because we put some codec in TelnetPipelineFactory.
String request = (String) e.getMessage();
// Generate and write a response.
String response;
boolean close = false;
if (request.length() == 0) {
response = "Please type something.\r\n";
Когда телнет готов закрыть соединение, он делает это:
ChannelFuture future = e.getChannel().write(response);
if (close) {
future.addListener(ChannelFutureListener.CLOSE);
}