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)递归锁 它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。 在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果其他事务有更新的话,正在提交的事务会进行回滚。