查询时,线程一直处于RUNNABLE

seawolf2000 2011-05-26 11:20:35
查询死锁问题
在Tomcat的线程中,有很多一直处理运行状态,用jstack跟踪,发现在查询时死锁了,神马情况,请大家帮忙解答下,谢谢!
"http-2010-3" daemon prio=10 tid=0x000000005d6f5c00 nid=0x1a58 runnable [0x00000000427d3000..0x00000000427d3b90]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.DataInputStream.readFully(Unknown Source)
at java.io.DataInputStream.readFully(Unknown Source)
at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:826)
at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:707)
- locked <0x00002aaab3b20e98> (a java.util.ArrayList)
at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
at net.sourceforge.jtds.jdbc.ResponseStream.peek(ResponseStream.java:88)
at net.sourceforge.jtds.jdbc.TdsCore.wait(TdsCore.java:3870)
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1042)
- locked <0x00002aaab3b25d38> (a net.sourceforge.jtds.jdbc.TdsCore)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:406)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:693)
- locked <0x00002aaab3b20978> (a net.sourceforge.jtds.jdbc.ConnectionJDBC3)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
at com.test.DataProvider.execQuery(CustomProvider.java:728)
at com.test.DataProvider.execute(CustomProvider.java:212)
at com.test.HelloWorld.doPost(HelloWorld.java:361)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
...全文
428 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zytry 2012-03-30
  • 打赏
  • 举报
回复
关注这个问题,我也遇到了
zhangxianya1 2011-06-19
  • 打赏
  • 举报
回复
要查询的数据可能被其他事务占用中,该事务也许处理完毕后没有commit
seawolf2000 2011-06-10
  • 打赏
  • 举报
回复
大家帮忙看下,谢谢!
seawolf2000 2011-06-01
  • 打赏
  • 举报
回复
顶起。!!!!
大川101 2011-05-26
  • 打赏
  • 举报
回复
哎,最头疼这种问题了,什么烂玩意
qybao 2011-05-26
  • 打赏
  • 举报
回复
- locked <0x00002aaab3b25d38> (a net.sourceforge.jtds.jdbc.TdsCore)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:406)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:693)
- locked <0x00002aaab3b20978> (a net.sourceforge.jtds.jdbc.ConnectionJDBC3)
这里没有死锁?
seawolf2000 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 awcx8888 的回复:]

soket没有关闭吧
是否一致在等待接收数据.............
[/Quote]

这个有可能,但是好像一直停不下来呀。。有什么设置没有?
seawolf2000 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qybao 的回复:]

要查询的数据可能被其他事务占用中,该事务也许处理完毕后没有commit
[/Quote]

数据库中没有死锁的情况,应该这种情况不太可能。现在有很多的RUNNING线程,一直停在那,总是不销毁。
awcx8888 2011-05-26
  • 打赏
  • 举报
回复
soket没有关闭吧
是否一致在等待接收数据.............
qybao 2011-05-26
  • 打赏
  • 举报
回复
要查询的数据可能被其他事务占用中,该事务也许处理完毕后没有commit
seawolf2000 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qybao 的回复:]

- locked <0x00002aaab3b25d38> (a net.sourceforge.jtds.jdbc.TdsCore)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:406)
at net.sourceforge.jtds.jdbc.JtdsPreparedState……
[/Quote]

是不是dbcp方面的问题呢,数据库好像没有看到死锁啊。

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧