摘要: CopyOnWriteArrayList: 是一个线程安全的ArrayList,对其的修改操作都是在底层的一个复制数组上进行的,也就是写时复制策略。 成员变量: Object数组 独占锁 方法: add set size isEmpty remove iterator 通过写时复制的方法来保证一致性 阅读全文
posted @ 2021-04-06 20:02 NobodyHero 阅读(103) 评论(0) 推荐(0) 编辑
摘要: AtomicLong:主要进行一些自增自减和交换操作。原子性的前提下用的是非阻塞CAS的方法,比Synchronized效率高。但是高并发下仍会同时竞争一个原子变量。 但是java提供了一个更好用的LongAdder LongAdder: 维护一个几只基值变量base和一个Cell数组。Cell数组 阅读全文
posted @ 2021-04-06 19:23 NobodyHero 阅读(80) 评论(0) 推荐(0) 编辑
摘要: JUC并发包的随机数生成器 弥补了Random类在多线程下的局限性。 局限性: Random生成随机数的机制是通过老种子计算出一个新的种子, 再通过新中子去计算随机数。 如果在多线程的情况下,虽然Random存在原子修饰符Atomic然后通过CAS避免多个线程共用一个老种子进行计算的情况。 但是这种 阅读全文
posted @ 2021-04-06 14:04 NobodyHero 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 悲观锁:对外界修改数据保持悲观的态度(保守)。认为数据很容易被他的线程修改,所以在修改前加锁,在整个数据处理的过程中,对数据保持加锁的状态。 实现依靠数据库提供的锁,在数据记录操作前加排他锁。 如果获取锁失败说明数据正在修改,线程等待或抛出异常。 如果获取锁成功就对数据进行操作,然后提交事务后释放排 阅读全文
posted @ 2021-04-06 11:00 NobodyHero 阅读(44) 评论(0) 推荐(0) 编辑