关于异步编程, JDK提供了Future接口, 但是此接口存在以下问题 :
A线程发起异步请求, A线程调用get()方法会被阻塞, 虽然提供了超时的get(timeout)但也无法满足要求....于是Netty提供了自己的Future接口
我们来看下Netty是如何实现异步编程
我们先看下简单的测试用例代码
服务端部分代码如下
serverBootstrap.group(bossGroup, workerGroup...根据目前的代码结构, 执行channelActive方法内代码的线程是IO线程, 如果读过我之前的文章的小伙伴, 应该知道我说的这个IO线程是什么意思....A线程只会把被写的数据放在IO线程对应的taskQueue中就返回了, 添加了一个监听后就打印了xxx ....假如IO线程执行的比较快, 还没等A线程添加监听, IO线程就把数据写成功了, 那么A线程在执行添加监听的代码时, 判断数据已经写成功, 那么就直接执行监听里面的内容, 即打印yyy 最后再打印xxx