A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© j816326 中级黑马   /  2013-7-3 15:18  /  1244 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵海洋 于 2013-7-6 15:28 编辑

  1. import java.util.LinkedList;

  2. public class Stack {

  3. LinkedList list = new LinkedList();

  4. public synchronized void push(Object x) {
  5. synchronized(list) {
  6. list.addLast( x );
  7. notify();
  8. }
  9. }

  10. public synchronized Object pop()
  11. throws Exception {
  12. synchronized(list) {
  13. if( list.size() <= 0 ) {
  14. wait();
  15. }
  16. return list.removeLast();
  17. }
  18. }
  19. }
复制代码
有同学说会,但他也说不清晰 求帮忙,最好详细点啊

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

4 个回复

正序浏览
具体我也说不太清楚,但是我去查帮助文档中有这样一段话:                                                                               linkedlist这个列表不能同步            注意,此实现不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法来“包装”该列表。

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

回复 使用道具 举报
求高手解答啊。真的急急急
回复 使用道具 举报
好像会啊。这是个面试的题目。但我不太懂啊 求帮忙啊
回复 使用道具 举报
不会发生死锁!但是没必要加两次锁,反而会影响运行效率!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马