"Thread-4" daemon prio=10 tid=0x00007f2c6000c000 nid=0x2455 runnable [0x00007f2c55deb000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:152) at java.net.SocketInputStream.read(SocketInputStream.java:122) at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:100) at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:143) at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:173) - locked <0x00000007b09ea480> (a com.mysql.jdbc.util.ReadAheadInputStream) at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2954) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3375) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3365) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3805) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2547) - locked <0x00000007b09dcfb8> (a com.mysql.jdbc.JDBC4Connection) at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4874) - locked <0x00000007b09dcfb8> (a com.mysql.jdbc.JDBC4Connection) at com.alibaba.druid.pool.DruidPooledConnection.setAutoCommit(DruidPooledConnection.java:694) at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:225)
以上是jstack得到的线程状态,多次dump都发现该线程一直不返回,也一直不超时!!!
原提问者GitHub用户Yaccc
如果您的Java程序在执行期间一直处于RUNNABLE状态,且在socketRead0处挂起,这通常表示程序正在等待从Socket套接字读取数据,但是没有收到数据或者数据传输被阻塞了。
这可能是由于以下原因导致的:
网络故障
如果您的程序与远程服务器之间的网络连接出现问题,可能会导致数据传输被阻塞。您可以检查网络连接是否正常,检查防火墙设置,或者尝试在其他网络环境下运行程序。
数据传输问题
如果数据传输过程中出现问题,可能会导致程序在读取数据时被阻塞。您可以尝试重新连接服务器,或者检查服务器是否正常运行。
程序逻辑问题
如果程序在读取数据时出现逻辑问题,可能会导致程序一直处于RUNNABLE状态。您可以检查程序逻辑是否正确,是否有死循环或者逻辑错误。
解决了,原因是网络抖动,同时因为没有设置socketTimeout,导致一直卡在setAutoCommit时一直read数据
原回答者GitHub用户Yaccc
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。