00:01
Java的BIIO基本介绍,前面呢我们已经对bio IO还有AIO做了一个大致的说明,也画出了它的示意图,我们现在呢来看一下bio的一个详细的讲解。首先我们说bio是什么?Bio就是传统的Java IO。它相关的类和接口呢,是在java.io这个包下面。Bio,它的全称是blocking IO,这样大家能看出来blocking什么意思,Blocking就是主色的意思,所以说它其实就是主色型的IO。而且同时呢,默认它也是同步的,呃,前面这个概念是不是我已经说了,就是服务器实现模式为一个连接一个线程,即客户端有连接请求时,就会启动一个线程来进行处理,那么如果连接不做任何事情呢,就会造成不必要的开销,同时呢,大家可以看到我们传统的bio呢,它是可以通过线程值机制得到一个改善的,注意。
01:04
这个传统通过这个线程池机制改善呢,它主要是能够实现多客户连接了,而对它并没并不能够减少我们线程的个数,它只是能够让多个客户来对服务器进行一个连接,对吧,就实现什么呢,实现多客户。多个客户,客户干什么呢?连接服务器。啊,也就是说实现我们的并发了。后面呢,我们会有个实例来讲解,最后还有一点就是bio的一个适用范围,是不是前面已经说过了,Bio方式呢,它适合用连接数目较小的固定架构,而且呢,它对服务器资源要求比较高,因为你线程很多嘛,所以显然它对服务器资源要求比较高,而且呢,这种方式在JDK也是之前是一个唯一选择,它虽然那是呃是这个同步阻塞的性能呢,也不是很高,但毕竟它是我们最早使用的,而且其他的IIO,其他的这种模型呢,也是建立在Bo基础之上的,所以说你还是要对它有一个基本的认识,否则的话呢,NIO你是搞不明白的,那Nike呢自然也就不明白了,那我们再来看一张图,这张图就是BIIO的工作机制原理图,而这张图其实呢,我们在前面已经画过了,其实就是一个图。
02:25
只是呢,我在这儿老师在这画的时候呢,是把server端画在了上面的,我把客户端呢画在了下面的,而这张原理图呢,它是反过来画的,其实都是一样,对不对?好,现在呢,我们有必要简单的来说一下bio编程的简单流程,这个流程说完了以后呢,我们马上给大家写一个实例好不好?好的,我们来看一下bio编程简单流程是什么样呢?是第一步,它是。服务器端。第一步,它实是服务器端。
03:01
服务器端启动。一个回忆一下哦,Server,什么shocked。或者叫创建都可以,第二步干什么呢,客户端。客户端启动一个socket,或者叫创建一个so,对什么呢?对服务器,对我们的服务器进行通讯,是这样子的吧,或者叫呃,数据连接,然后默认情况默认。情况下我们回顾哈,默认情况下服务器端,服务器端干什么呢?需要对每个连接对每个请求吧,这个请求你也可以提成是一个客户啊。对客户,对每个客户吧,这样好理解你,因为一个客户可能有多个请求,对不对,对每个客户。客户干什么呢?建立。建立什么呀?一个线程干什么呢?与之通讯。与其与之这样与之通讯。
04:01
是不是这样子的,然后这里面有个问题,就是客户端。客户端。我们说一下主色是在哪里发生的客户端,嗯,发出请求后,发出请求后,比如说它是一个连接请求,对不对,然后他先干什么呢?先咨询他,先咨询我们的服务器,服务器是否有线程响应。是不是这样子的,有现成响应?写错了响应。啊,如果没有他会怎么样呢?同学们记还有印象吗?如果没有则会。则会等待。等待。或者或者遭到拒绝或者拒绝。诶,这个有点卡哈。或者拒绝。被拒绝。为什么呢?因为有可能我们服务器端它拒绝你的连接。被拒。拒绝。
05:01
好,这是一个,那么还有一种情况就是如果这个线程有响应会怎么样呢?啊,如果有响应。如果有响应,如果有响应客户端他会干什么呀,客户端线程。客户端的这个线程呢,会等待。会等待看什么呀?会等待请求结束。请求结束后。结束后才继续执行。才继续执行,这个地方又体现出什么呀,体现出其实它是。它是一个阻塞性的,就说我一个请求发给过去,如果你没有响应,我就等待。等待就有可能超时吗?或者是被拒绝,那么如果我一个请求给你过后,我如果你你有这个,你你如果。我就先看你有没有这个响应号,我就等待你,我这个时候就有两种可能,就是你有响应,还有一种是没有响应,就是有响应的话呢,我就会等待你这个这个请求结束过后,我才会继续执行,因此他在这个地方其实会有个阻塞。
06:13
嗯,对,所以说我们通过这这个bio编程的简单流程可以看出来,传统的bio呢,其实它是一个同步的,同时呢是一个阻塞性的编程模式,好同学们关于bio这个工作机制,我们就聊到这里,聊到聊完了过后呢,我们下面呢,就准备给大家写一个案例来简单回顾一下。
我来说两句