这段代码演示了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()); } }