paip.java 线程无限wait的解决

2014-11-24 07:53:36 · 作者: · 浏览: 0
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