阻塞IO的概念
阻塞IO(Blocking IO)是一种IO操作模式。在这种模式下,当一个IO操作(如读、写)执行时,如果不能立即完成操作,程序会暂停执行,直到操作完成。简单来说,阻塞IO会使调用线程等待IO操作的完成,无法继续处理其他任务。
特点
- 简单性:编程模型简单,易于理解和实现。
- 线程阻塞:IO操作会导致线程阻塞,等待IO操作完成。
- 适用场景:适用于连接数较少且每个连接需要较长时间处理的场景,以字节为传输单位。
阻塞IO的Java示例
下面是一个使用Java进行阻塞IO操作的简单示例。这段代码展示了如何使用ServerSocket
和Socket
进行阻塞IO操作。
代码示例
服务端代码
客户端代码
运行说明
- 启动服务端:首先编译并运行
TCPServer
。服务端会在9999端口上监听客户端连接。 - 启动客户端:然后编译并运行
TCPClient
。客户端会连接到服务端,并可以输入消息发送到服务端。 - 交互:客户端发送的每条消息,服务端会接收并返回一个“Echo”响应。
总结
阻塞IO适用于简单的网络应用,但在高并发场景下效率较低,因为每个连接会占用一个线程,可能导致线程资源耗尽。为了解决高并发问题,可以使用非阻塞IO(如NIO)或异步IO技术。