网络-java中BIO(同步阻塞模型)的理解与应用

BIO通信模型

BIO通信服务端,通常有一个独立的Acceptor线程负责监听客户端的连接。接收到客户端连接请求后会为每个客户创建一个新的线程进行链路处理,处理完成后返回应答给客户端,也就是经典的请求-应答 通信模型。 但是随着客户端并发数量上升,服务端的线程膨胀,系统性能急剧下降,最终会导致系统不可用。
在这里插入图片描述
在这里插入图片描述

缺点:

无法满足高并发,高性能的场景。因为它每一个连接就会创建一个新的线程,而创建线程是需要消耗资源的,比如消耗进程的用户空间用来创建栈,PC计数器等。

BIO模型编程步骤:

分为客户端和服务端。
服务端首先创建ServerSocket,等待用户连接。
一个用户连接需要线程来做处理。
以BIO单线程的编程步骤举例。

服务端:
  1. 创建ServerSocket实例。
  2. 绑定占用端口(bind)。
  3. 通过accept() 方法监听并等待客户端的连接。
  4. 如果有客户端连接则获得socket实例。
  5. 通过socket实例进行读写操作。
  6. 关闭资源和socket。
客户端:
  1. 创建socket实例。
  2. 通过connect()连接服务端。
  3. 通过socket实例进行读写操作。
  4. 关闭资源和socket。
BIO编程中有哪些方法是阻塞的?
  • accept
  • connect
  • read
  • write
BIO多线程编码实例:
服务端:
package Internet.BIODemo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;

class server extends Thread{
   
    private Socket socket;
    public server(Socket socket){
   
        this.socket=socket;
    }
    @Override
    public void run() {
   
        try {
   
            System.out.println(
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值