并发程序线程dump后发现很多处于等待状态的线程(线程总数10-70个都试过)导致程序假死,用jstack检测未发现死锁:
"pool-116-thread-1" prio=5 tid=295 TIMED_WAITING at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226) at jsr166y.LinkedTransferQueue.awaitMatch(LinkedTransferQueue.java:691) at jsr166y.LinkedTransferQueue.xfer(LinkedTransferQueue.java:600) Local Variable: jsr166y.LinkedTransferQueue$Node#6 at jsr166y.LinkedTransferQueue.poll(LinkedTransferQueue.java:1068) at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:500) at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:114) at test.Main.getSqlServerConnection(Main.java:232)