non-blocking I/O 和 blocking I/O 区别

本文介绍了Blocking I/O和Non-blocking I/O的概念。在Blocking I/O中,服务端处理请求时线程会被堵塞,直到数据读写完成,可能导致资源浪费。而Non-blocking I/O允许单线程处理多个并发连接,通过selector和channel进行数据读写,更加高效地应对高并发场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在应用中,客户端连接到服务端,服务器处理请求并响应。在这个过程中,客户端和服务端通过socket连接,绑定到socket中,服务端等待着监听来自client的请求。
在这里插入图片描述

客户端与服务端连接后,相互读写数据通过socket。

Blocking I/O – 堵塞 I/O

通过Blocking I/O,客户端发送请求到服务端,线程处理这个连接,这是一个堵塞,直到数据读取或者写入完成。相关操作在完成之前,线程都是一直等待。现在执行一个并发请求,这就是需要多线程,需要分配新的线程

  • 先创建 server socket 监听请求连接通过指定端口
ServerSocket serverSocket = new ServerSocket(portNumber);

在这里插入图片描述

Server Socket 监听客户端连接

  • 调用accept() 方法,服务端启动并等待客户端连接,当客户端发送请求时,server socket 接收来自客户端的请求并用 新的socket与客户端连接,在新的连接之前,server socket 是堵塞的ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值