是否可以暂停一个InputStream,让其他线程暂时访问它?

时间:2015-02-24 00:43:59

标签: java multithreading

想象一下这个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();
}

在这种情况下会发生askSomethingSOMETHING发送到远程计算机,但主runnable类会窃取答案并首先打印它,因此askSomething方法会只是超时或挂起。

如何在不重写所有内容的情况下解决这个问题?我的意思是有没有办法暂停第一个InputStream,直到我完成它?

0 个答案:

没有答案