想象一下这个Runnable类在它自己的线程中:
private Socket _socket;
public void run() // its own thread
{
while(true)
print(_socket.getInputStream().read());
}
然后想象一下代码中的其他地方,不同的线程需要使用相同的套接字来快速发送和接收内容:
public static int askSomething(Socket socket)
{
socket.getOutputStream().write(SOMETHING);
socket.getOutputStream().flush();
return _socket.getInputStream().read();
}
在这种情况下会发生askSomething
将SOMETHING
发送到远程计算机,但主runnable类会窃取答案并首先打印它,因此askSomething
方法会只是超时或挂起。
如何在不重写所有内容的情况下解决这个问题?我的意思是有没有办法暂停第一个InputStream,直到我完成它?