上次文章分享了Java中的NIO,一般我们都不会使用原生的NIO,这里介绍下怎么使用Netty来实现NIO的,我们一步步来看服务端的代码,明白服务端代码再去看客户端也就简单了。
netty例子
![cd4f70fc207d921d464782507f83878d.png](https://i-blog.csdnimg.cn/blog_migrate/49595ea7879268cd1185e6e2998aca57.jpeg)
上面是netty服务端的一个简单的例子,一般可以分为五步:1、创建线程池;2、创建启动类;3、配置参数;4、开启监听;5、阻塞直到serverSocket关闭。下面我们一步步来看netty都做了些什么工作。
1、创建线程池
![4258c585d7d97c9fd3f348dc30a4f831.png](https://i-blog.csdnimg.cn/blog_migrate/140c07346ad28f35c6c6626bdf1d9828.jpeg)
从继承关系来看,NioEventLoopGroup最终是实现了Executor接口的,NioEventLoopGroup可以理解为线程池。
![77b47c525a13e2e7fda4cf90d7fbe411.png](https://i-blog.csdnimg.cn/blog_migrate/00985280ad6425513f3bcac3990db52a.jpeg)
我们看下参数最多的构造方法。
nThreads:线程池中的线程数,默认值为 CPU 核心数 *2
![e1b3307f5447b57f8093b607f690824c.png](https://i-blog.csdnimg.cn/blog_migrate/f1de1b0fe0f1fc68300f6c1a26cae9e4.jpeg)
executor:线程池,默认是ThreadPerTaskExecutor
![50dcc036535692e77d5fa40d0691e7a4.png](https://i-blog.csdnimg.cn/blog_migrate/c84eeb0a4f2ae0309f20d4bf8e295d3f.jpeg)
chooserFactory:线程