Netty开篇——BIO章(二)

Java BIO 基本介绍

  1. 属于传统的 java io编程,内容见java.io包中
  2. BIO(blocking I/O) : 同步阻塞,服务器实现模式为个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)。

Java BIO 工作机制

Netty开篇——BIO章(二)_第1张图片

对 BIO 编程流程的梳理

  1. 服务器端启动一个 ServerSocket
  2. 客户端启动 Socket对服务器进行通信,默认情况下服务器端需要对每个客户建立一个线程与之通讯
  3. 客户端发出请求后,先咨询服务器是否有线程响应,如果没有则会等待,或者被拒绝
  4. 如果有响应,客户端线程会等待请求结束后,在继续执行

Java BIO 应用实例(选修)

实例说明:

  1. 使用 BIO 模型编写一个服务器端,监听 6666 端口,当有客户端连接时,就启动一个线程与之通讯。
  2. 要求使用线程池机制改善,可以连接多个客户端
  3. 服务器端可以接收客户端发送的数据(telnet 方式即可]。

Netty开篇——BIO章(二)_第2张图片

Netty开篇——BIO章(二)_第3张图片

Java BIO问题分析

  1. 每个请求都需要创建独立的线程与对应的客户端进行读写操作,当并发数较大时,需要创建大量线程来处理连接,系统资源占用较大。
  2. 连接建立后,如果当前线程暂时没有数据可读,则线程就阻塞在 Read 操作上,造成线程资源浪费
  3. 他交互的时候有一个主线程,每次来了新连接会创建一个子线程去负责处理

你可能感兴趣的:(Netty,java)