之前在提问区看到这个问题,之后就仔细研究了一下。我的思路是这样的,要证明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
我不知道这图能不能发出去,表示怀疑
求大神给我指条明路吧,昨天弄一天头都大了一圈 |