为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 socketRead0 使线程处于 RUNNABLE 状态

为什么 socketRead0 使线程处于 RUNNABLE 状态

墨色风雨 2021-06-07 13:22:06
我用 Java use 编写了一个简单的 ECHO 协议服务器Thread。就这么简单:ServerSocket serverSocket = new ServerSocket(7000, 0, InetAddress.getByName("127.0.0.1"));while (true) {    Socket socket = serverSocket.accept();    new Thread(() -> {        try (Socket s = socket;             BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));             BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()))) {            String inputLine;            while ((inputLine = in.readLine()) != null) {                out.write(inputLine + '\n');                out.flush();            }        } catch (IOException e) {        }    }).start();}线程正在等待客户端的输入inputLine = in.readLine()。但是我发现所有工作线程都处于RUNNABLE状态jstack,我认为它们可能处于WAITING状态。线程在等待数据到达时被阻塞,但为什么在这里呢RUNNABLE?这是jstack输出:"Thread-0" #10 prio=5 os_prio=31 tid=0x00007f9f8282e800 nid=0x1307 runnable [0x000070000623a000] java.lang.Thread.State: RUNNABLE  at java.net.SocketInputStream.socketRead0(Native Method)  at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)  at java.net.SocketInputStream.read(SocketInputStream.java:170)  at java.net.SocketInputStream.read(SocketInputStream.java:141)  at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)  at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)  at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)  - locked <0x000000076b167a18> (a java.io.InputStreamReader)  at java.io.InputStreamReader.read(InputStreamReader.java:184)  at java.io.BufferedReader.fill(BufferedReader.java:161)  at java.io.BufferedReader.readLine(BufferedReader.java:324)  - locked <0x000000076b167a18> (a java.io.InputStreamReader)  at java.io.BufferedReader.readLine(BufferedReader.java:389)  at EchoServer3.lambda$main$0(EchoServer3.java:20)
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

WAITING 意味着一个 Java 线程正在等待另一个 Java 线程释放 Java 对象锁。

Java 不知道操作系统块、锁或调度。因此,Java 线程可能被阻塞以等待输入这一事实不会影响 Java 对其状态的看法。


查看完整回答
反对 回复 2021-06-10
  • 1 回答
  • 0 关注
  • 418 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信