paip.java 线程无限wait的解决

paip.java  线程无限wait的解决


jprofl>threads>thread dump>


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


作者Attilax  艾龙,  EMAIL:1466519819@qq.com 
来源:attilax的专栏
地址:http://blog.csdn.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
posted @ 2013-12-11 18:40  attilaxAti  阅读(176)  评论(0编辑  收藏  举报