1. 在CopyOnWriteArrayList中,当多个线程同时对列表进行写操作时,它们不会直接修改原始列表,而是先将原始列表进行复制,然后在复制的副本上进行修改,最后再将副本替换为原始列表。这个过程中,读操作仍然直接访问原始列表,因此可以避免读写冲突。

  2. 多线程同时写入:add方法内部使用synchorized同步阻塞,保证同一时间只有一个线程进行写入操作。

    1. 当有多个线程同时读取CopyOnWriteArrayList时,它们会共享同一个原始列表对象。
    2. 当某个线程进行写操作时,它会先将原始列表进行复制,得到一个新的列表副本。
    3. 然后,该线程在新的副本上进行修改操作,例如添加、删除、修改元素等。
    4. 当该线程完成修改操作后,它会将新的副本替换为原始列表,以确保其他线程在读取列表时能够访问到最新的版本。
    5. 如果有多个线程同时进行写操作,则它们会按照先到先服务的原则依次对原始列表进行复制、修改和替换的操作。