0
点赞
收藏
分享

微信扫一扫

BIO基础

fbd4ffd0717b 2022-02-18 阅读 88


1、Java BIO 基本介绍

Java BIO 就是传统的java io编程, 其相关的类和接口在java.io。

BIO:同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)。

BIO 方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,程序简单易理解。

2、Java BIO 工作机制

(1)服务端启动一个ServerSocket。

(2)客户端启动Socket对服务器进行通信,默认情况下服务器需要对每个Socket建立一个线程用来通信。

(3)客户端发出请求后, 先咨询服务器是否有线程响应,如果没有则会等待,或者被拒绝。

(4)如果有响应,客户端线程会等待请求结束后,再继续执行。

3、Java BIO 应用实例

使用BIO模型编写一个服务端,端口为3000。使用线程池,当一个客户端连接时就启动一个线程进行通信。

BIO基础_java

当启动两个客户端对服务器发送消息

1.启动服务端Socket成功

2.等待客户端连接

3.客户端连接成功

4.等待客户端连接

5.启用线程:pool-1-thread-1

6.客户端发送的信息是:hello, 对应的线程是:pool-1-thread-1

7.客户端连接成功

8.等待客户端连接

9.启用线程:pool-1-thread-2

10.客户端发送的信息是:hi, 对应的线程是:pool-1-thread-2

可以发现一个线程对应一个客户端

Java BIO 问题分析

每个请求都需要创建独立的线程,与对应的客户端进行数据 Read,业务处理,数据 Write 。

当并发数较大时,需要创建大量线程来处理连接,系统资源占用较大。

连接建立后,如果当前线程暂时没有数据可读,则线程就阻塞在 Read 操作上,造成线程资源浪费。



举报

相关推荐

BIO编程

BIO之Stream

BIO NIO AIO

submit_bio

传统的BIO

Netty(二):BIO

【Bio】牙的分类

0 条评论