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
相关文章
- 多线程中使用HttpContext.Current为null的解决办法
- Java并发--线程间协作的两种方式:wait、notify、notifyAll和Condition
- 线程间协作的两种方式:wait、notify、notifyAll和Condition
- Java并发编程(十三)线程间协作的两种方式:wait、notify、notifyAll和Condition
- 14 线程间协作的两种方式:wait、notify、notifyAll和Condition
- 多线程之线程间协作的两种方式:wait、notify、notifyAll和Condition
- 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- STM32不停的进入串口接收中断卡死主线程的解决方法
- 用线程安全随机数解决Random在多线程中随机性重复的问题
- Java多线程Thread.yield(),thread.join(), Thread.sleep(200),Object.wait(),Object.notify(),Object.notifyAll()的区别