腾讯四面:说说你对Java NIO的通道Channel的理解

前言

Java NIO中的Channel和流类似,但不完全相同:

  • Channel是双向的,我们既可以向Channel中写数据,也可以从Channel中读取数据。但流的读写通常是单向的。

  • Channel可以实现异步地读写。

  • Channel中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kAF9dnZD-1614064332095)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0220%2Fed8c8791j00qot2r9002bc000o600g8c.jpg&thumbnail=690x2147483647&quality=75&type=jpg)]

Channel的实现

  • FileChannel 可以从文件中读取数据

  • DatagramChannel 通过UDP协议,读写网络中的数据

  • SocketChannel 通过TCP协议,读写网络中的数据

  • ServerSocketChannel 可以监听新建立的TCP连接,就像Web服务器一样,对每个新建立的连接都创建一个SocketChannel

金三银四读者福利:整理好的 金三银四面试资料集锦 分享。

FileChannel 示例

packagesuccess;
importjava.io.FileNotFoundException;
imp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值