Posted on 2010-11-15 13:53
leekiang 閱讀(294)
評論(0) 編輯 收藏 所屬分類:
java
當(dāng)一個類已經(jīng)很好的同步以保護(hù)它的數(shù)據(jù)時,這個類就稱為“線程安全的”。
即使是線程安全類,也應(yīng)該特別小心,因為操作的線程是間仍然不一定安全。
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