摘要: cas 计数器 public class CounterCAS implements Counter { volatile int i = 0; // 本质是修改内存中某一个变量的值 static Unsafe unsafe; private static long valueOffSet; sta 阅读全文
posted @ 2020-09-06 20:18 李荣先辈Java 阅读(218) 评论(0) 推荐(0) 编辑
摘要: CAS Compare and swap 比较和交换。 属于硬件同步原语, 处理器提供了基本内存操作的原子性保证。 底层 CAS 操作需要两个参数: 旧值A ( 操作前的值 ) 和 新值 B, 在操作时,先比较下输入的旧值 A 和 内存中的值是否不一致,不一致则代表内存数据发生变化, CAS 失败。 阅读全文
posted @ 2020-09-06 20:17 李荣先辈Java 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 一、加锁实现计数器 public class CounterSync implements Counter { volatile int i = 0; // 本质是修改内存中某一个变量的值 public synchronized int incr() { return i++; } public i 阅读全文
posted @ 2020-09-06 15:51 李荣先辈Java 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 一、使用 J.U.C中的 atomicInteger 实现计数器 由于(一)中的计数器不能保证并发安全,因此需要改一下; 思路:使用 J.U.C中的 AtomicInteger 实现计数器 二、实现 public class CounterAtomic implements Counter { // 阅读全文
posted @ 2020-09-06 15:48 李荣先辈Java 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 面试题目:如何实现限流 思路: 限制同一时间段的请求数量,即使用计数器来限制请求的数量。 请求开始加1,请求结束减1; 思路实现代码 @RestController public class Demo1_CounterTest { Counter counter = new CounterBasic 阅读全文
posted @ 2020-09-06 14:58 李荣先辈Java 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 目录: 多线程并发安全计数器实现限流 :https://www.cnblogs.com/Jomini/p/13621330.html 多线程并发安全计数器实现限流 (一) 简单实现 :https://www.cnblogs.com/Jomini/p/13621757.html 多线程并发安全计数器实 阅读全文
posted @ 2020-09-06 12:33 李荣先辈Java 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 一、概述 Java内存模型是Java语言在多线程并发情况下对于共享变量读写(实际是共享变量对应的内存操作)的规范,主要是为了解决多线程可见性、原子性的问题,解决共享变量的多线程操作冲突问题。】 JMM描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存中读取出变量这 阅读全文
posted @ 2020-09-06 10:09 李荣先辈Java 阅读(1332) 评论(0) 推荐(1) 编辑