ArrayLLis 线程不安 实验

这段代码演示了ArrayList的线程不安全,我让3个线程分别对list加入300个字符串,最后的arr的大小为800多,大家可以测试一下,我的一次是898,一次是897,同时还学了join的用法

import java.util.ArrayList;

class ArraySafe implements Runnable
{
	private ArrayList<String> array=null;
	public ArraySafe(ArrayList<String> ar)
	{
		array=ar;
	}
	

	@Override
	public void run() {
		// TODO Auto-generated method stub
		//每个线程加入30个自己的名字到list
		for(int i=0;i<300;i++)
		{
			array.add(Thread.currentThread().getName());
			try {
				Thread.sleep((long) (100*Math.random()));
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
		}
		
	}
	

}

public class ArrayListVectorTest {

	public static void main(String[] args) throws InterruptedException {
		// TODO Auto-generated method stub
		ArrayList<String> array=new ArrayList<String>(100);
		ArraySafe as=new ArraySafe(array);
		Thread t1=new Thread(as);
		Thread t2=new Thread(as);
		Thread t3=new Thread(as);
		t1.start();
		t2.start();
		t3.start();
		t1.join();
		t2.join();
		t3.join();
		System.out.println(array.size());
		

	}

}

  

原文地址:https://www.cnblogs.com/hansongjiang/p/3778714.html