1. 程式人生 > >將非同步集合轉換為同步集合

將非同步集合轉換為同步集合

工具類方法

static
<T> List<T>

          返回指定列表支援的同步(執行緒安全的)列表。
static
<K,V> Map<K,V>

          返回由指定對映支援的同步(執行緒安全的)對映。
static
<T> Set<T>

          返回指定 set 支援的同步(執行緒安全的)set。

實現原理

List list = new ArrayList();//非同步的。

list = MyCollections.synList(list);//返回一個同步的list.







//給非同步的集合加鎖。

class MyCollections{

	public static  List synList(List list){
		
		return new MyList(list);
	}

	private class MyList implements List{
	private List list;
	
	private static final Object lock = new Object();
	MyList(List list){	
		this.list = list;	
	}
	
	public boolean add(Object obj){
		synchronized(lock)
		{
			return list.add(obj);
		}
	}
	
	public boolean remove(Object obj){
		synchronized(lock)
		{
			return list.remove(obj);
		}
	}

}
}