package demo.thread;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class 给非同步集合加锁 {
public static void main(String[] args) {
List list = new ArrayList();
list = MyCollections.synList(list);//变同步了
}
}
class MyCollections {
static List synList(List list) {
// return new MyList(list);//注释部分加上
return new ArrayList();//去掉
}
public static class MyList /*implements List */ {//注释部分加上,因为没有重写所有List方法,所以报错
Lock lock = new ReentrantLock();
private List list;
MyList(List list) {
this.list = list;
}
public boolean add(Object o) {
synchronized (lock) {
return list.add(o);
}
}
public boolean remove(Object o) {
synchronized (lock) {
return list.remove(o);
}
}
//...重写所有List方法并上锁
}
}
synchronizedCollection给非同步集合加锁原理
最新推荐文章于 2021-06-23 22:45:14 发布