并发
文章平均质量分 81
naget
Java技术微信公众号:Vegout
展开
-
用Redis中的zset实现一个限流器
你被限流过吗 我还记得14年抢红米的时候,下面这个图是我最烦的一个图 抢了两个星期,才终于买到了我的第一台小米手机:红米1s。小米商城加入了一个排队的机制,于是我们可以感知到自己被限流了,但大部分服务,比如最近各大电商的抢茅台活动,并没有让我们感知到限流,不管你是手速不够还是被限流,都会给你返回“很遗憾,已经被抢光了”类似的提示。不过确实也没必要让用户感知到这个机制(你看,程序员又想做产品经理的主了),毕竟结果都是一样的。 对于这种火爆的活动,为了保证服务的稳定性,都需要对特定的接口进行限流,用Redis中原创 2021-01-10 21:20:18 · 1517 阅读 · 2 评论 -
Redis实现分布式锁
分布式锁初见 public static int count = 0; private static int expireTime = 50; private static String lockKey = "desc"; public void decr() { if (RedisPoolUtil.setNxPx(lockKey, "1", expireTime)) { try { //业务处理原创 2021-01-03 17:03:21 · 205 阅读 · 0 评论 -
阻塞队列中的线程协作(阻塞、唤醒、锁)
自己写一个阻塞队列 阻塞队列所谓一种队列,主要操作由两个put放入元素和take取出元素。所谓的阻塞就是当多个线程同时存取数据时,如果遇到队列为空或者队列为满时,会发生阻塞。 put:向队列中存入一个元素,如果已满,则阻塞当前线程,等待唤醒。如果正常存入了元素,那么唤醒其他阻塞的线程(有些执行take操作的线程因为队列为空而阻塞) take:从队列中取一个元素,如果队列为空,则阻塞当前线程,等待唤...原创 2019-07-27 10:55:40 · 1131 阅读 · 0 评论