gpt4 book ai didi

java - 无阻塞读写java套接字

转载 作者:行者123 更新时间:2023-12-02 03:13:54 26 4
gpt4 key购买 nike

我有一个简单的 Java IO TCP 服务器/客户端原型(prototype),其中服务器大量写入客户端,而客户端偶尔写入服务器。按照标准,写入会发生 while 循环,特别是在 Worker 线程的 run() 方法中:

@Override
public void run() {
while (true) {
// Server writes to client
try {
socket.getOutputStream.write(writeArray);
} catch (Exception e) {
System.exit(1);
}
}

这是一个 while 循环,因此如果我还包含读取操作,它将阻塞。

@Override
public void run() {
while (true) {
// Server writes to client
try {
socket.getOutputStream.write(writeArray);
} catch (Exception e) {
System.exit(1);
}

// Server reads from client
try {
int read = socket.getInputStream.read();
} catch (Exception e) {
System.exit(1);
}
}

是否存在关于如何允许偶尔读取而不阻塞或严重浪费 CPU 周期的标准模式?

最佳答案

看一下 available() 方法:https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html#available-- 。那么你只需要阅读“如果可用”即可。

关于java - 无阻塞读写java套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40612052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com