从服务器读取时,有一个客户端套接字被阻塞
"main" #1 prio=5 os_prio=0 tid=0x00007f0870008800 nid=0x32da runnable [0x00007f087689c000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
起初我认为它是BLOCKED状态,但是它是RUNNABLE状态。从文档中我知道
处于可运行状态的线程正在Java虚拟机中执行 机器,但它可能正在等待运行中的其他资源 系统,例如处理器。
我想知道系统资源在等待什么?所以我执行下面的命令
gdb -p 13017
0x00007f087647d2fd in pthread_join () from /lib64/libpthread.so.0
(gdb)
这是否意味着它现在在pthread_join
函数中被阻止了?
pthread_join()函数等待线程指定的线程 终止。
同时执行# nc server_ip socket_port
以比较和执行gdb -p nc_pid
0x00007f2846468248 in poll () from /lib64/libc.so.6
(gdb)
这是否意味着nc
在轮询功能中被阻止了?