
高并发
文章平均质量分 76
一切还来得及
日常的平淡,会杀灭一个人所有的志气!
展开
-
java并发线程工具类
CountDownLatch概念countDownLatch这个类使用一个线程等待其他线程各自执行完毕后再执行是通过一个计数器实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程*就可以恢复工作了。源码1.countDownLatch类中只提供了一个构造器//参数count为计数值public CountDownLatch(int count) { }; 类中有三个方法是非常重要的:/原创 2022-02-23 10:25:19 · 200 阅读 · 0 评论 -
java集合类总结
HashMapHashMap中的属性:1.capacity:容量,Node数组的大小(桶的数量),值为2的N次幂2.threshold:扩容阈值,等于capacity * load factor 当size大于此值时进行扩容3.loadFactor:负载因子,默认为0.75f4.size属性是指map中的键值对个数5.initialCapacity hashMap初始化时设置的容量大小(Node数组的长度),initialCapacity = (需要存储的元素个数 / 负载因子) + 1,如果可原创 2022-02-15 23:27:53 · 156 阅读 · 0 评论 -
reentrantLock、readWriteLock、AQS
Lock接口使用void lock() 获取锁(不死不休)方法不允许Thread.interrupt中断,即使检测到Thread.isInterrupted,一样会继续尝试获取锁,失败则继续休眠。只是在最后获取锁成功后再把当前线程置为interrupted状态,然后再中断线程。bollean tryLock() 获取锁(浅尝辄止,尝试获取锁)boolean tryLock(long time,TimeUnit unit)throws InterruptedExcepiton 获取锁(过时不候,原创 2022-02-01 22:36:07 · 543 阅读 · 0 评论 -
手写ReentarntLock
自定义reetrantlock方便理解原创 2022-01-24 16:21:16 · 207 阅读 · 0 评论 -
线程操作原子性
原子性违反原子性示例public class Counter{ volatile int i=0; public void add(){ i++; } public static void main (String[]args)throws InterruptedExcetion{ final Counter ct=new Counter(); for(int i=0;i<6;i++){ ne原创 2022-01-20 11:23:13 · 74 阅读 · 0 评论 -
线程操作原子性
原子性违反原子性示例public class Counter{ volatile int i=0; public void add(){ i++; } public static void main (String[]args)throws InterruptedExcetion{ final Counter ct=new Counter(); for(int i=0;i<6;i++){ ne原创 2022-01-16 17:50:19 · 166 阅读 · 0 评论 -
CPU高速缓存与JMM
yCPU高速缓存为了解决CPU越来越快的运行速度与相对较慢的主存访问速度的矛盾。CPU中的寄存器数量有限,在执行内存寻址指令时,经常需要从内存中读取指令所需的数据或是将寄存器中的数据写回内存。引入高速缓存后,CPU在需要访问主存中某一地址空间时,高速缓存会拦截所有对于内存的访问,并判断所需数据是否已经存在于高速缓存中。如果缓存命中,则直接将高速缓存中的数据交给CPU;如果缓存未命中,则进行常规的主存访问,获取数据交给CPU的同时也将数据存入高速缓存。缓存一致性在多核CPU的架构下,通常每一个核心都拥有原创 2022-01-16 17:48:24 · 489 阅读 · 0 评论 -
使用condition来实现阻塞队列
使用Lock和Condition实现阻塞式队列原创 2022-01-16 12:32:35 · 279 阅读 · 0 评论 -
Synchronized底层实现,锁升级的具体过程
Synchronized锁升级原创 2021-12-31 14:40:02 · 312 阅读 · 0 评论 -
请求合并
高并发场景中,调用批量接口相比调用非批量接口有更大的性能优势。但有时候,请求更多的是单个接口,不能够直接调用批量接口,如果这个接口是高频接口,对其做请求合并就很有必要了。比如电影网站的获取电影详情接口,APP的一次请求是单个接口调用,用户量少的时候请求也不多,完全没问题;但同一时刻往往有大量用户访问电影详情,是个高并发的高频接口,如果都是单次查询,后台就不一定能hold住了。为了优化这个接口,后台...原创 2019-08-27 23:28:26 · 5043 阅读 · 0 评论