Posted on 2010-11-15 13:53
leekiang 阅读(286)
评论(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