java 多线程
本文介绍了java 多线程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
以下代码高并发时会有啥问题,怎么优化
解决方案
1、用了synchronized修饰了方法,又用synchronized修饰方法体,这两者是等效的,都是获得this(MyStack)的对象监视器并且临界区也是一致的,同是因为synchronized是可重入的,所以你这样用不会发生错误,但是这是不必要的;
2、可能会发生 @房管局规划部 中出现的错误,wait()可能出现假唤醒,而不满足临界条件,后续逻辑就会异常。
可以参看jdk wait()方法的注释描述:
所以,应该是这样:
synchronized( method_or_shared_object){
while(list.size()<=0)
wait();
// pop something...
}
一般来说,都需要在while(condition) wait()来防止假唤醒。
这篇关于java 多线程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文