通天战队|「015期」JavaSE面试题(十五):网络IO流
2020年百日百更原创Java面试题库之往期回顾
【000期】Java最全面试题库思维导图
【001期】JavaSE面试题(一):面向对象
【002期】JavaSE面试题(二):基本数据类型与访问修饰符
【003期】JavaSE面试题(三):JavaSE语法(1)
【004期】JavaSE面试题(四):JavaSE语法(3)
【005期】JavaSE面试题(五):String类
【006期】JavaSE面试题(六):泛型
【007期】JavaSE面试题(七):异常
【008期】JavaSE面试题(八):集合之List
【通天战队|「015期」JavaSE面试题(十五):网络IO流】【009期】JavaSE面试题(九):集合之Set
【010期】JavaSE面试题(十):集合之Map
【011期】JavaSE面试题(十一):多线程(1)
【012期】JavaSE面试题(十二):多线程(2)
【013期】JavaSE面试题(十三):多线程(3)
【014期】JavaSE面试题(十四):基本IO流
开篇介绍
大家好 , 我是Java面试题库的提裤姐 , 今天这篇是JavaSE系列的第十五篇 , 主要总结了Java中的IO流的问题 , IO流分为两篇来讲 , 这篇是第二篇 , 主要是网络IO流 , 在后续 , 会沿着第一篇开篇的知识线路一直总结下去 , 做到日更!如果我能做到百日百更 , 希望你也可以跟着百日百刷 , 一百天养成一个好习惯 。
Q:
什么是BIO?
同步阻塞式IO , 服务端创建一个ServerSocket , 然后客户端用一个Socket去连接那个ServerSocket , 然后ServerSocket接收到一个Socket的连接请求就创建一个Socket和一个线程去跟那个Socket进行通信 。
public class BioServer { public static void main(String[] args) {// 服务端开启一个端口进行监听int port = 8080;ServerSocket serverSocket = ; //服务端Socket socket; //客户端InputStream in = ;OutputStream out = ;try {serverSocket = new ServerSocket(port); //通过构造函数创建ServerSocket , 指定监听端口 , 如果端口合法且空闲 , 服务器就会监听成功// 通过无限循环监听客户端连接 , 如果没有客户端接入 , 则会阻塞在accept操作while (true) {System.out.println("Waiting for a new Socket to establish" + " ," + new Date.toString);socket = serverSocket.accept;//阻塞 三次握手in = socket.getInputStream;byte buffer = new byte[1024];int length = 0;while ((length = in.read(buffer)) > 0) {//阻塞System.out.println("input is:" + new String(buffer, 0, length) + " ," + new Date.toString);out = socket.getOutputStream;out.write("success".getBytes);System.out.println("Server end" + " ," + new Date.toString);}}} catch (Exception e) {e.printStackTrace;} finally {// 必要的清理活动if (serverSocket != ) {try {serverSocket.close;} catch (IOException e) {e.printStackTrace;}}if (in != ) {try {in.close;} catch (IOException e) {e.printStackTrace;}}if (out != ) {try {out.close;} catch (IOException e) {e.printStackTrace;}}}}}Q:
什么是NIO?
同步非阻塞
包括Selector , 这是多路复用器 , selector会不断轮询注册的channel , 如果某个channel上发生了读写事件 , selector就会将这些channel获取出来 , 我们通过SelectionKey获取有读写事件的channel , 就可以进行IO操作 。 一个Selector就通过一个线程 , 就可以轮询成千上万的channel , 这就意味着你的服务端可以接入成千上万的客户端 。
推荐阅读
- 大河客户端|布局战队,导师各有妙招,《2020中国好声音》收视率蝉联第一
- 周到|“好声音”蝉联省级卫视综艺节目收视第一,首迎抢位战导师布局战队各有妙招
- 通天战队|A股最励志闻泰科技!给华为小米打工到半导体巨头,半年赚17亿
- |《街舞3》火舞台battle开启 钟汉良战队团魂之力势不可挡
- |《这!就是街舞》第三季火舞台热力喷发,队长领衔齐舞大秀燃炸战队之魂
- 巅峰战队|ConcurrentHashMap的部分源码分析
- 巅峰战队|VERTIX户外手表,勇攀新高峰——COROS
- 环球网|美海军陆战队一架CH-53E紧急迫降 未造成人员伤亡
- tes战队|lpl战队成员大更新!RNG崛起!TES在明年无可撼动!
- 碰碰战队|麒麟5nm芯片推迟,消息称华为正力催台积电交付订单
