如何停止BufferedReader readline()?

G.U*_*U.N 3 java multithreading

我是java新手,我试图制作客户端 - 服务器形式.客户端和服务器可以相互聊天.所以我的客户端有2个线程用于2个任务:发送和接收消息.我想当我的SendThread从键盘字符串"Bye"读取时,我的客户端将停止2个线程.但问题是线程接收仍然执行BufferedReader的语句readline()所以它无法到达出口这里是我的代码:

        try {
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            while (!stop) {
                String temp = br.readLine();
                if (temp.length() == 0) {
                    Thread.sleep(100);
                }
                else System.out.println(" Receiving from server: " + temp);
            }
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

更新:对不起大家,因为我没有更清楚地解释.我的客户端有2个独立运行的线程.因此,此代码所在的ReceiveThread可以始终等待来自服务器的消息.SendThread也总是从键盘读取数据.因此,当我输入"Bye"时,SendThread会读取此字符串并停止客户端.问题是ReceiveThread正在执行,readLine()所以它无法自行停止.

use*_*421 5

关闭套接字以进行输入,这将导致readLine()返回null,之后读取线程应该关闭套接字.