java 里面arraylist 是线程不安全的?这样的代码怎么解释
package com.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Executors;
public class Test {
	private List<String> muster=new ArrayList<String>();
	public Test(){
		Executors.newSingleThreadExecutor().execute(new Runnable(){
			@Override
			public void run() {
                  try {
					int i=1;
					while(true){
						muster.add(""+i);
						System.out.println("放入数据 " + i++);
						Thread.sleep(new Random().nextInt(1000));
					}
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}});
		Executors.newSingleThreadExecutor().execute(new Runnable(){
			@Override
			public void run() {
				try {
					while(true){
						if(muster.size()>0){
						System.out.println("移除数据 " + muster.remove(0));
						}
						Thread.sleep(new Random().nextInt(1000));
					}
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}});		
	}
	public static void main(String[] args) {		
		new Test();
	}
}
------解决方案--------------------
------解决方案--------------------我说菜刀能把手剁了,你说你用了十几年没出事,这样的争论有意义吗?