package demo.thread;import java.util.ArrayList;import java.util.List;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class 给非同步集合加锁 {publicstaticvoidmain(String[] args){
List list =newArrayList();
list = MyCollections.synList(list);//变同步了}}classMyCollections{static List synList(List list){// return new MyList(list);//注释部分加上returnnewArrayList();//去掉}publicstaticclassMyList/*implements List */{//注释部分加上,因为没有重写所有List方法,所以报错
Lock lock =newReentrantLock();private List list;MyList(List list){this.list = list;}publicbooleanadd(Object o){synchronized(lock){return list.add(o);}}publicbooleanremove(Object o){synchronized(lock){return list.remove(o);}}//...重写所有List方法并上锁}}