前言:
现时你们对“netty实现长连接池”大概比较关切,朋友们都想要学习一些“netty实现长连接池”的相关资讯。那么小编同时在网上网罗了一些对于“netty实现长连接池””的相关内容,希望小伙伴们能喜欢,小伙伴们一起来学习一下吧!在了解netty的时候,关于网络这一块儿真的让人头疼,不知道大伙是怎么学习的,我研究了好长时间,感觉有些知识点还是似懂非懂的,那今天我就抛出我的疑惑,以及我的理解,希望借此机会和大家有一个交流,共同进步。
一、同步异步,阻塞非阻塞
关于这个四个概念我估计很多人都有点蒙,这里我说一下我的理解,我认为有两个层面的解释
第一个层面:
同步与异步:
同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行;
异步就是:如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行不会导致整个流程的暂时等待。
阻塞与非阻塞:
阻塞就是:当某个事件或者任务在执行过程中,它发出一个请求操作,但是由于该请求操作需要的条件不满足,那么就会一直在那等待,直至条件满足;
非阻塞就是:当某个事件或者任务在执行过程中,它发出一个请求操作,如果该请求操作需要的条件不满足,会立即返回一个标志信息告知条件不满足,不会一直在那等待。
这里我举个例子
在main方法中假如调用两个方法a,b如果是同步的,那么a方法执行完了,b方法才能执行,b方法必须等待a方法执行完,才能开始执行,如果是异步的话,a方法和b方法可以同时执行,相当于另外起了两个线程分别去执行a方法和b方法,两个方法时相互不影响,而阻塞和非阻塞,则是针对单个方法的比如a方法需要读取一个文件,如果没有读取完文件就不返回则这个方法时阻塞的,如果a方法只是发出一个读文件的命令立即就返回则该方法就是非阻塞的,这就是我理解的这个层面上的同步异步,阻塞和非阻塞
还有一个层面就是网上很多大神关于IO同步,异步,阻塞,非阻塞的问题,这里我推荐一位大神的博客,我除了没有参考英文文档外(英语不好),基本上所有资料都查阅了,还是没有理解透彻,希望,有人能看完之后,或者查阅相关资料之后,能来共同讨论这个问题
好,同步异步,阻塞非阻塞的问题就说到这里,还有一个问题,就是标题列出来的:netty实现的长连接和netty通过websocket协议实现的长连接的区别
他们到底有什么区别,在谷歌上,百度上,都查找了,但是没有查到什么权威的解释,难道这个问题没有其他人疑惑吗?那这里我简单说一下我的疑惑,因为netty可以实现基于tcp的长连接,而且性能也非常好,netty通过websocket协议也可以实现长连接,据说性能也非常好,而且都是双全工通信,那么问题来了,他们到底有什么区别,说句实话,对于我们开发人员来说,没有很大并发的情况下,真的感觉不出来区别,估计唯一的区别就是底层协议不同,握手方式不同等吧
以上是我工作中使用netty产生的疑惑,至今不得解(或者说不太清楚),如果您看到这篇文章,对此有兴趣,咱们可以共同讨论,相互学习,在此谢过
标签: #netty实现长连接池