对照着看了下新旧Java版本里CopyOnWriteList的源码,发现在Java11中许多曾经使用reentrantlock的地方已经换成了synchronized;
//old style function
final ReentrantLock lock = this.lock;
lock.lock();
try{
//do somthing
}finally{
lock.unlock();
}
//new style function
synchronized (lock){
//do something
}
代码简洁了不少,侧面也反映出Java团队已经将synchronized的性能打磨的相当不错,足以应付一些复杂的场景了。