paip.java 线程无限wait的解决

时间:2023-03-08 20:04:18

paip.java  线程无限wait的解决





jprofl>threads>thread dump>





查看棉线程执行的code stack... 估计是.比如.BlockingQueue.wait





作者Attilax  艾龙,  EMAIL:1466519819@qq.com 

来源:attilax的专栏

地址:http://blog.****.net/attilax





解决:

1.使用poll,取代tack

 poll(time):取走BlockingQueue里排在首位的对象,若不能立即取出,则可以等time参数规定的时间,取不到时返回null

  

  

 2.take前判断哈BlockingQueue.size  ,n是使用孪这个.

  if (Sqlqueue.size() == 0) {

Thread.sleep(10);

continue;// cbb





}

str = Sqlqueue.take();

  

  

 3.主线程exit前join其他线程...

 

try {

tdcba.join();

} catch (InterruptedException e) {





e.printStackTrace();

}

System.out.println("---finish");

 

  参考:

  Java多线程(五)之BlockingQueue深入分析 - JAVA编程语言程序开发技术文章 - 红黑联盟.htm