替换java中不使用';没有阻塞功能

替换java中不使用';没有阻塞功能,java,inputstream,blocking,Java,Inputstream,Blocking,当我尝试使用多个并行请求调用.read的inputstream方法时,响应时间会增加。我认为它在读取前一个响应之前是被阻止的 InputStream的替代方案是什么 我正在使用UNIX域套接字,并从中尝试从inputstream读取数据,这里是我正在使用的代码---------- - 当我尝试使用多个并行请求调用inputstream的.read方法时,响应时间会增加。我认为它在读取前一个响应之前是被阻止的 否。在数据到达此套接字之前,它将被阻止。除了机器上的总负载外,它与其他插座无关。在不同的

当我尝试使用多个并行请求调用
.read
inputstream
方法时,响应时间会增加。我认为它在读取前一个响应之前是被阻止的

InputStream
的替代方案是什么

我正在使用UNIX域套接字,并从中尝试从inputstream读取数据,这里是我正在使用的代码----------

-

当我尝试使用多个并行请求调用inputstream的.read方法时,响应时间会增加。我认为它在读取前一个响应之前是被阻止的

否。在数据到达此套接字之前,它将被阻止。除了机器上的总负载外,它与其他插座无关。在不同的输入流之间,读取没有顺序化

InputStream的替代方案是什么


通过NIO包进行非阻塞I/O或异步I/O,但您尚未正确识别问题。您的应用程序中可能存在一些不适当的同步。或者您的诊断可能不正确。

尝试类似于……我已经实现了这一点,但仍然存在相同的问题:(提供代码。或者查看非阻塞IO()嗨,JEY,我已经附加了代码。请看一看。我正在使用UNIX域套接字连接UNIX套接字。我已经尝试了各种Java NIO的非阻塞IO,但无法修复错误。谢谢,Raja,您使用的是什么库gor UnixDomainSocketClient?查看其文档。我在上面附加了代码,请让我知道同步在哪里正在发生。如果您想了解有关该应用程序的任何其他信息,请随时询问。我只说了“出现”,我已将其改为“可能”,我们只听到您的话,您的应用程序正在对不同套接字上的读取进行顺序化,这似乎是一个错误的诊断。您的代码令人震惊。它忽略了str的结尾eam.如果
read()
返回-1,则对等方已断开连接,并且您的代码未记录
IOExceptions
。因此可能发生了任何事情,很可能是自旋循环。
UnixDomainSocketClient socket = new UnixDomainSocketClient(sockFileName, JUDS.SOCK_STREAM);
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
out.write(inputStreamData.getBytes());
String modelResponse = "";
while (true) {
            try {
                modelResponse += (char) in.read();
            } catch (Exception e) {
                break;

            }
        }
        out.flush();
        socket.close();
        in.close();
        out.close();
}