nio的read write方法在为配置configBlocking时使用是阻塞还是不阻塞
时间: 2024-04-09 12:28:00 浏览: 65
Android开发进阶之NIO非阻塞包
4星 · 用户满意度95%
在Java NIO中,`read()`和`write()`方法的塞行为取决于通道的阻塞式。当通道配置为阻塞模式,这些方法将会阻塞,直到读取或写入操作完成。而当通道为非阻塞模式时,这些方法会立即返回,无论读取或写入是否完成。
要配置通道的阻塞模式,可以使用`configureBlocking(boolean block)`方法。将参数`block`设置为`true`即可将通道设置为阻塞模式,设置为`false`则为非阻塞模式。
下面是一个示例:
```java
SocketChannel channel = SocketChannel.open();
channel.configureBlocking(true); // 阻塞模式
int bytesRead = channel.read(buffer); // 阻塞直到数据读取完成
int bytesWritten = channel.write(buffer); // 阻塞直到数据写入完成
```
需要注意的是,默认情况下,通道是阻塞模式。因此,如果没有显式地调用`configureBlocking()`方法将其设置为非阻塞模式,那么`read()`和`write()`方法将默认为阻塞模式。
阅读全文