并发编程
文章平均质量分 96
liao0801_123
这个作者很懒,什么都没留下…
展开
-
CountDownLatch内部实现原理, 基于AQS
CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。CountDownLatch使用示例:首先我们写一个示例,看看怎么使用CountDownLatch工具类CountDownLatchTest.java 1 2 3 4 5 6 7 8 9 10 11 12 13转载 2020-07-06 01:00:12 · 370 阅读 · 0 评论 -
深入分析AQS原理
写在前面:实现的关键:CLH,state非公平锁的锁抢占是在各node(thread)入CLH队列的时候确定的, head节点释放锁之后,CLH链上的节点依次获得锁.而不是释放锁之后再进行抢占.从Lock作为切入点我想以lock作为切入点来讲解AQS,毕竟同步锁是解决线程安全问题的通用手段,也是我们工作中用得比较多的方式。Lock APILock是一个接口,方法定义如下void lock() // 如果锁可用就获得锁,如果锁不可用就阻塞直到锁释放void lockInte.原创 2020-06-03 15:36:22 · 492 阅读 · 0 评论 -
什么时候会抛出InterruptedException,如何处理InterruptedException
何时会出现InterruptedException? 当一个线程处于阻塞状态下(例如休眠)的情况下,调用了该线程的interrupt()方法,则会出现InterruptedException。 @Test public void testName() throws Exception { // 被中断的线程 final Thread t = new Thread(){ @Override public转载 2020-06-01 16:06:40 · 5731 阅读 · 1 评论 -
ConcurrentHashMap锁分段原理和内部API原理
JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。因此Java5.0开始针对多线程并发访问设计,提供了并发性能较好的并发容器,引入了java.util.concurrent包。与Vector和Ha...转载 2018-12-17 16:40:05 · 1119 阅读 · 0 评论 -
如何设计一个抢红包系统(商品秒杀同理)
参考资料:https://www.jianshu.com/p/c4a743bbe3a4这种情况下要解决的问题:同一时间同时进行抢购,网站瞬时访问流量激增。 访问请求数量远远大于库存数量,但是只有少部分用户能够秒杀成功(高并发访问的数据安全性)。优化思路数据预处理,系统启动时将红包(商品)信息存到缓存中,并用唯一id进行标识,将后续逻辑精简为维护用户与ID的关系。 异步处理,将后续...原创 2019-02-25 18:40:03 · 8469 阅读 · 3 评论