黑马程序员技术交流社区
标题:
这个程序会形成死锁吗
[打印本页]
作者:
j816326
时间:
2013-7-3 15:18
标题:
这个程序会形成死锁吗
本帖最后由 赵海洋 于 2013-7-6 15:28 编辑
import java.util.LinkedList;
public class Stack {
LinkedList list = new LinkedList();
public synchronized void push(Object x) {
synchronized(list) {
list.addLast( x );
notify();
}
}
public synchronized Object pop()
throws Exception {
synchronized(list) {
if( list.size() <= 0 ) {
wait();
}
return list.removeLast();
}
}
}
复制代码
有同学说会,但他也说不清晰 求帮忙,最好详细点啊
作者:
hadexs
时间:
2013-7-3 15:57
不会发生死锁!但是没必要加两次锁,反而会影响运行效率!
作者:
j816326
时间:
2013-7-3 16:59
好像会啊。这是个面试的题目。但我不太懂啊 求帮忙啊
作者:
j816326
时间:
2013-7-3 17:53
求高手解答啊。真的急急急
作者:
lanbuohan
时间:
2013-7-3 19:46
具体我也说不太清楚,但是我去查帮助文档中有这样一段话: linkedlist这个列表不能同步 注意,此实现不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法来“包装”该列表。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2