1 2 3 4 5 ··· 9 下一页
摘要: Phaser是jdk1.7引入的同步工具类,与countdownlatch和cyclicbarrier 功能重叠,但是又覆盖他们的功能。 package com.alibaba.dubbo.common.test; import java.util.concurrent.*; /** * @auth 阅读全文
posted @ 2021-02-17 18:50 以梦为码 阅读(188) 评论(0) 推荐(0) 编辑
摘要: CyclicBarrier是java提供的同步辅助类。一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point),才得以继续执行。阻塞子线程,当阻塞数量到达定义的参与线程数后,才可继续向下执行。 public class BarrierMain { 阅读全文
posted @ 2021-02-16 21:04 以梦为码 阅读(1902) 评论(0) 推荐(0) 编辑
摘要: semaphore:信号量,又称许可管理器,来控制线程的并发数量。 例如: 1、主线程设置许可数为2,标识最大允许并发线程数为2,前边的线程释放许可后,阻塞的线程才可以继续获取许可。信号量可以设置公平和非公平,当前设置为非公平 public static void main(String[] arg 阅读全文
posted @ 2021-02-16 20:22 以梦为码 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1、延迟队列,可以通过rabbitmq自带机制实现:TTL+死信队列(通过设置消息或者队列的TTL,过期后进行消息的投递,从而达到delay的效果)。 但存在问题: 1)设置队列TTL:同一个队列的所有消息从入队列到TTL的时间,过期后会投递到相应死信交换机。这样如果消息的过期时间不尽相同,会创建n 阅读全文
posted @ 2021-01-19 15:57 以梦为码 阅读(1462) 评论(0) 推荐(0) 编辑
摘要: 由于用户提交订单后,用户同时又可以再下相同的一单,这类不算为重复提交。规避的是一份订单重复提交两次。 思路1: 创建订单服务保证其幂等性。后端添加订单号服务,在用户订单页面返回给页面唯一的订单号,在提交订单时传向后端订单号, 同时数据库中订单表的订单号字段设置为唯一索引,若已提交,则抛出异常,从而避 阅读全文
posted @ 2020-06-26 12:23 以梦为码 阅读(1352) 评论(0) 推荐(0) 编辑
摘要: CAS是一种常用的硬件同步原语,即由一组计算机硬件提供的原子操作。 CAS的逻辑: 有三个参数:p-要改变变量的指针;old-旧值;new-新值。执行时先比较p和old值是不是相等,如果相等,就把new赋值给p,并返回true.否则不改变,返回false。 java在1.5之后引入CAS,主要放在J 阅读全文
posted @ 2020-02-20 19:57 以梦为码 阅读(475) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch是用来解决线程之间通信的。 CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成了任务,然后 阅读全文
posted @ 2020-02-20 18:41 以梦为码 阅读(3690) 评论(0) 推荐(0) 编辑
摘要: 死锁定义为一组互相竞争资源的线程因互相等待,导致永久阻塞的情况。 即; 如何解决死锁: 1、一次性申请所有的资源,直到拿到所有资源的锁再进行操作 2、主动释放其所占有的资源,synchronized是做不到的,使用lock 3、按资源id的从小到大的顺序去申请锁 阅读全文
posted @ 2020-02-18 20:13 以梦为码 阅读(126) 评论(0) 推荐(0) 编辑
摘要: LRU算法 LRU算法定义: LRU算法是指最近最少使用算法,意思是LRU认为最近使用过的数据,将来被访问的概率会大,最近没有被访问的数据意味着以后刚问的概率小。 为何要用LRU算法: 1、我们的存储空间是有限的,当存储空间满了之后,要删除哪些数据呢,才能会时缓存的命中率高一些呢 2、LRU算法还是 阅读全文
posted @ 2020-02-16 20:08 以梦为码 阅读(976) 评论(0) 推荐(0) 编辑
摘要: 缓存穿透是指 查询一个不存在的数据,每次都需要查询数据库。由于写入缓存是被动操作,并且数据库每次查询为空,所以不会向缓存中写入数据,导致每次查询会越过缓存直接查询数据库,访问量大时增加数据库压力 解决方案: 1、回写空值: 查询完数据库时,将空值塞入缓存并加入较短的过期时间。需要评估一下缓存容量是否 阅读全文
posted @ 2020-02-16 19:01 以梦为码 阅读(203) 评论(0) 推荐(0) 编辑
1 2 3 4 5 ··· 9 下一页