今天写了个多线程计算TOP-K问题的程序,运行的时候发行线程池没有退出,在eclipse里bug的时候一直显示是running的状态,如图:
找人问题了下,说是用jstack打出线程信息可以查看到相关信息,
首先用windows的任务管理器找到这个进程,查找PID为1040,然后在java_home/bin下执行jstack 1040
然后查找第134行,发现是lock.lock()后,没有释放锁导致的问题,添加
finally {
lock.unlock();
},再运行,正常,OK