MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

线程安全类

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

只有注册用户登录后才能发表评论。


网站导航: