java非阻塞通信学习

  java非阻塞通信思想按照书上说的来讲,就是你在烧开水也在做饭,不用找两个人去完成这两件事情。一个人完成这两件事就行了,这个人不停的看水是否烧开,饭是否做好

一旦其中某个事情发生就做相应的处理。生活例子读起来很简单,百度了很久也没有找到非阻塞通信的和阻塞通信比较的优缺点,可能由于非阻塞通信是JSE1.4以后出现的原因吧。

  非阻塞通信相对阻塞通信来说要复杂很多,其中要进行非阻塞通信编程必须要会使用几个类:

1,Buffer,缓存区类:ByteBuffer,CharBuffer...

2,Charset,字符编码类

3,SelectableChannel通道类,主要有两个子类,ServerSocketChannel和SocketChannel,在非阻塞通信中所有数据的收发都是通过Buffer,虽然这两个类的方法read和write都是向通道Channel直接写入和读取数据;还有一点就是这两个类默认都是阻塞模式,需要手动设置为非阻塞模式,调用他们的configureBlocking(false)即可

4,Selector类,在阻塞通信中式依靠事件驱动的,ServerSocketChannel和SocketChannel都要向Selector注册相应的事件后才能够被处理;Selector维护了三个集合,all-keys,selected-keys,canclled-keys他们都是事件的集合,事件句柄SelectionKey的集合

5,SelectionKey类,ServerSocketChannel和SocketChannel向Selector注册的事件句柄

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值