1. 该启动方式无需单独开线程启动netty,dubbo的NettyService就是此方式
public static void main(String[] args) {
ServerBootstrap serverBootstrap = new ServerBootstrap();
// boos接受新连接线程,主要负责创建新连接(从dubbo copy 过来)
NioEventLoopGroup boos = new NioEventLoopGroup(1,
new DefaultThreadFactory("NettyServerBoss", true));
// worker负责读取数据的线程,主要用于读取数据以及业务逻辑处理(从dubbo copy 过来)
NioEventLoopGroup worker = new NioEventLoopGroup(10,
new DefaultThreadFactory("NettyServerWorker", true));
try {
serverBootstrap
.group(boos, worker)
.channel(NioServerSocketChannel.class)
.childHandler(new SimpleServiceChannelInitializer());
ChannelFuture channelFuture = serverBootstrap.bind(10086);
channelFuture.syncUninterruptibly();
channelFuture.channel();
//该启动方式为了阻塞主线程
Thread.sleep(200000);
} catch (Exception e) {
} finally {
boos.shutdownGracefully();
worker.shutdownGracefully();
}
}
网友评论