Posted on 2010-11-15 13:53 
leekiang 阅读(303) 
评论(0)  编辑  收藏  所属分类: 
java 
			
			
		 
		
		当一个类已经很好的同步以保护它的数据时,这个类就称为“线程安全的”。
		即使是线程安全类,也应该特别小心,因为操作的线程是间仍然不一定安全。
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class TestThread {
    public static void main(String[] args) {
        final NameList nl = new NameList();
        nl.add("aaa");
        class NameDropper extends Thread {
            public void run() {
                String name = nl.removeFirst();
                System.out.println(name);
            }
        }
        Thread t1 = new NameDropper();
        Thread t2 = new NameDropper();
        t1.start();
        t2.start();
    }
}
class NameList {
    private List nameList = Collections.synchronizedList(new LinkedList());
    public void add(String name) {
        nameList.add(name);
    }
    public String removeFirst() {//removeFirst方法必须同步
        if (nameList.size() > 0) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return (String) nameList.remove(0);
        } else {
            return null;
        }
    }
}
http://lavasoft.blog.51cto.com/62575/99155