黑马程序员技术交流社区
标题:
如何证明LinkedList集合是线程不安全的
[打印本页]
作者:
小泽
时间:
2015-2-14 09:59
标题:
如何证明LinkedList集合是线程不安全的
之前在提问区看到这个问题,之后就仔细研究了一下。我的思路是这样的,要证明LinkedList集合是线程不安全的,我要先证明vector集合是线程安全的,然后再把vector换成LinkedList就OK了。
代码如下:
import java.util.Vector;
class LinkedListSyn implements Runnable{
Vector<String> list;
public LinkedListSyn(Vector<String> list) {
super();
this.list = list;
}
public void storage(){
synchronized (list) {
for (int i = 0; i < 100; i++) {
list.add("调用添加的线程"+Thread.currentThread().getName()+":"+i);
}
for (String s : list) {
System.out.println("输出的线程"+Thread.currentThread().getName()+s.toString());
}
}
}
public void run() {
while (true) {
storage();
}
}
}
public class LinkedListSynDemo {
/**
* @param args
*/
public static void main(String[] args) {
Vector<String> link = new Vector<String>();
new Thread(new LinkedListSyn(link),"0000").start();
new Thread(new LinkedListSyn(link),"11111111").start();
}
}
复制代码
不论我怎么加同步代码块,都不能让它同步。
错误如下图:
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