摘要: 适用性 缓存在很多场景下都是相当有用的。例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存 Guava Cache与ConcurrentMap很相似,但也不完全一样。最基本的区别是ConcurrentMap会一直保存所有添加的元素,直到显式地移除。相对地, 阅读全文
posted @ 2020-06-17 17:41 叮叮叮叮叮叮当 阅读(1606) 评论(0) 推荐(0) 编辑
摘要: 公平和非公平锁 公平锁:是指多个线程按照申请的顺序来获取值。在并发环境中,每一个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个就占有锁,否者就会加入到等待队列中,以后会按照 FIFO 的规则获取锁 非公平锁:是指多个线程获取值的顺序并不是按照申请锁的顺序,有可能后 阅读全文
posted @ 2020-06-17 15:13 叮叮叮叮叮叮当 阅读(687) 评论(0) 推荐(0) 编辑
摘要: 写入时复制(CopyOnWrite) 写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时 阅读全文
posted @ 2020-06-17 14:22 叮叮叮叮叮叮当 阅读(307) 评论(0) 推荐(0) 编辑
摘要: ArrayList的线程安全故障 /** * 发现报java.util.ConcurrentModificationException */ public class ContainerDemo { public static void main(String[] args) { List<Inte 阅读全文
posted @ 2020-06-17 11:08 叮叮叮叮叮叮当 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 原子引用 public class AtomicReferenceDemo { public static void main(String[] args) { User cuzz = new User("cuzz", 18); User faker = new User("faker", 20); 阅读全文
posted @ 2020-06-17 10:58 叮叮叮叮叮叮当 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 原子类使用 public class CASDemo { public static void main(String[] args) { AtomicInteger atomicInteger = new AtomicInteger(666); // 获取真实值,并替换为相应的值 boolean 阅读全文
posted @ 2020-06-17 10:49 叮叮叮叮叮叮当 阅读(254) 评论(0) 推荐(0) 编辑