我试图创建一个简单的聊天程序,有一个“服务器”和一个客户端,现在我的问题是,程序在将消息从服务器读取到客户端时阻塞,反之亦然。此示例的特点是客户端到服务器的消息存在问题。the end of the while ((c = input.readoutput = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
每个人都说的是read()块(尤其是在网速远低于我们的计算机的套接字中)。我试着想象一下这是怎么回事。我是说它看起来像:read() { if (there is at least one byte to read) {我的问题是:首先,read()是如何工作的;第二个问题是,我们的线程在阅读时是否有任何“睡眠”?我的意思是,有一段时间(真)是CPU周期的浪费,我想知道阻止read()上的线程是否得到另一个线程的通知:“嘿,
试图找到在非阻塞模式下从InputStream读取所有字节的解决方案。当没有数据可用时,下面函数中的inputStream.read()部分将永远阻塞。ByteArrayOutputStream baos = new ByteArrayOutputStream(); int read= 0;
while ((read = inputStream.read(buffer,