Java多线程并发

线程安全:
    java并发容器之CopyOnWriteArraylist(读多写少)CopyOnWriteArrayList来做容器。这个类和ArrayList最大的区别就是add(E) 的时候。容器会自动copy一份出来然后再尾部add(E)。
        java并发容器之CopyOnWriteArraylist即使写时复制的容器,通俗的说就是当我们网一个容器中添加元素的时候,不直接网当前容器添加,
        而是先将当前容器进行复制,复制出一份新的容器,然后新的容器进行添加元素,添加完后,再将元容器的引用指向新的容器,
        这样做的好吃是我们可以对CopyOnWrite容器机型并发的读,而不需要家锁,因为当前容器不会添加任何元素,所以CopyOnWrie容器也是一种读写分离的思想,地和些不同的容器;
    
    synchronized 和 ReentrantLock区别:
    悲观锁的创建:(synchronized)
        Collection<String> Collection = new Collections.SynchronizedCollection(str);
        是一种并发控制的方法。如果一个线程执行事务的时候,其他县城要想在执行必须等待当前线程把锁释放;
    乐观锁:(重入锁ReentrantLock)递归锁
        它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。
        在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果其他事务有更新的话,正在提交的事务会进行回滚。
原文地址:https://www.cnblogs.com/czbcxy/p/7082322.html