java 输入流卡住

标签 java multithreading sockets inputstream

我正在尝试运行一个线程,该线程进入套接字,抓取输入流并读取它。我创建了数百个这样的线程,并设置了读取超时,但线程仍然停留在 read() 行。

public void readPack() {

socket.setSoTimeout(4*1000);

if (socket.isConnected()) {


     buffer parse = new buffer();
     parse.addByte((byte) skt.getInputStream().read());
     parseIncoming(parse);
}


} catch (Exception e) {}

}

最佳答案

奇怪的代码。您创建一个缓冲区,将一个字节读入其中,然后解析该字节,然后重复整个过程。一个字节肯定不需要太多解析。您永远不会从读取中检查 -1,因此当对等方断开连接时,此循环将无休止地旋转。最后,Socket.isConnected() 不是一个有用的测试,特别是它不能检测对等点断开连接。

关于java 输入流卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3588852/

相关文章:

c# - Silverlight 中的异步套接字连接

java - 如何避免在此代码中使用 if-else?

java - 如何为读取文件并给出字节内容的方法编写 Junit 测试用例?

java - 如何限制一个任务使用线程池中的所有线程?

multithreading - 如何在 Swift 中创建 volatile bool 值?

c++ - 如何在客户端-服务器模型(OpenCV C++)中通过套接字传输 cv::VideoCapture 帧?

Java 被识别,但 Javac 未被识别

java - 集成测试包含哪些内容以及如何设置它们

c# - 使用 Interlocked.CompareExchange

java - 一个ServerSocket与多个Socket之间的通信