黑马程序员技术交流社区

标题: 如何证明LinkedList集合是线程不安全的 [打印本页]

作者: 小泽    时间: 2015-2-14 09:59
标题: 如何证明LinkedList集合是线程不安全的
之前在提问区看到这个问题,之后就仔细研究了一下。我的思路是这样的,要证明LinkedList集合是线程不安全的,我要先证明vector集合是线程安全的,然后再把vector换成LinkedList就OK了。
代码如下:
  1. import java.util.Vector;

  2. class LinkedListSyn implements Runnable{
  3.        
  4.         Vector<String> list;
  5.         public LinkedListSyn(Vector<String> list) {
  6.         super();
  7.         this.list = list;
  8.         }

  9.         public void storage(){
  10.                 synchronized (list) {

  11.                         for (int i = 0; i < 100; i++) {
  12.                                 list.add("调用添加的线程"+Thread.currentThread().getName()+":"+i);
  13.                         }                               
  14.                         for (String s : list) {
  15.                                 System.out.println("输出的线程"+Thread.currentThread().getName()+s.toString());
  16.                         }
  17.                 }
  18.         }

  19.         public void run() {

  20.                 while (true) {
  21.                         storage();
  22.                 }
  23.         }
  24. }

  25. public class LinkedListSynDemo {

  26.         /**
  27.          * @param args
  28.          */
  29.         public static void main(String[] args) {
  30.                
  31.                 Vector<String> link = new Vector<String>();
  32.                 new Thread(new LinkedListSyn(link),"0000").start();
  33.                 new Thread(new LinkedListSyn(link),"11111111").start();
  34.         }

  35. }
复制代码


不论我怎么加同步代码块,都不能让它同步。
错误如下图:
d:\erro.jpg
我不知道这图能不能发出去,表示怀疑

求大神给我指条明路吧,昨天弄一天头都大了一圈
作者: 小泽    时间: 2015-2-14 10:02
图果然挂了,谁能告诉我怎么传图片。3q
作者: lwh316658735    时间: 2015-2-15 11:54
本帖最后由 lwh316658735 于 2015-2-15 11:58 编辑

看源码,看是否加有synchronized关键字,而且要让集合同步,Collections工具类里有让list集合同步的方法synchronizedList方法。
作者: wf111sxwf    时间: 2015-2-16 16:09
你这 代码有问题啊  你的 Run 方法 在执行的时候 直接 就在同一线程任务 中  存储了 元素  又输出了 元素  你开启 俩线程  没有意义啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2