Java线程监听套接字,WHILE循环不等待

时间:2014-02-19 14:42:19

标签: java multithreading sockets

我正在为学校项目创建一个socket服务器。客户端是用C#编写的,因此我目前使用的ObjectInputStream对象无效。

我现在正在尝试使用InputStreamReader。在此示例中,while (true)循环始终以全油门运行。使用ObjectInputStream等待对象到达。

我怎样才能以正确的方式做到这一点?

private InputStreamReader inputStream;

@Override
public void run() {

    while (true) {

        try {

            // ObjectInputStream.read() waits for an object to arrive, 
            // so the execution is paused here

            int data;
            String string = new String();

            while ( (data = inputStream.read() ) != -1) {
                char thisChar = (char) data;
                string = string + thisChar;
            }


        } catch (IOException ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
            break;
        }

    }

}

1 个答案:

答案 0 :(得分:1)

摆脱外循环。这是毫无意义。内循环将一直运行直到流结束。在那之后,进一步的迭代是徒劳的。你在EOS旋转。