Collections集合静态工具可以让非同步进行同步操作的源码分析

我们都知道,Collections这个类封装了对集合操作的一些静态方法,比如,我们经常用到的集合进行排序操作sort(List<T> list) 方法.,swap(List<?> list, int i, int j),对集合中位置的替换操作。等等这些可以在Collections api文档中可以看到,在这里我就不一一解释了。我在api文档中看到,可以对非同步进行同步操作,synchronizedList
好奇心的我决定看下他的源码:
 
public static <T> List<T> synchronizedList(List<T> list) {
return (list instanceof RandomAccess ?
                new SynchronizedRandomAccessList<T>(list) :
                new SynchronizedList<T>(list));
    }

这个是通过synchronizedList这个方法点进来的。我们可以看到这个方法中new SynchronizedList<T>(list),在找到这个类
 
static class SynchronizedList<E>
extends SynchronizedCollection<E>
implements List<E> {
        static final long serialVersionUID = -7754090372962971524L;


final List<E> list;


SynchronizedList(List<E> list) {
   super(list);
   this.list = list;
}
SynchronizedList(List<E> list, Object mutex) {
            super(list, mutex);
   this.list = list;
        }
 可以看到在这里这个类,并且继承了一个类。我们暂且不管,我们可以看到他的构造方法中对这个list进行了初始化.在这个类中对其list进行一系列的操作,我们去看下他们对list做了哪些操作.
public void add(int index, E element) {
   synchronized(mutex) {list.add(index, element);}
        }
  public E remove(int index) {
   synchronized(mutex) {return list.remove(index);}
        }
当我们看到这个方法时,是不是有一种恍然大悟的感觉,在这个方法中给他加了synchronized这个锁,并且还是同一个对象
mutex由此可以说明这个是同一个锁,所以,这个Collections实现了对非同步能进行同步操作。
基于gcc的stm32环境搭建源码+文档说明.zip,个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的stm32环境搭建源码+文档说明.zip基于gcc的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值