[英]Read and write java socket without blocking
我有一个简单的Java IO TCP服务器/客户端原型,其中服务器正在向客户端大量写入数据,而客户端偶尔会向服务器写入数据。 写入发生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-- 。 然后,您只需阅读“如果可用”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.