概述CountDownLatch(闭锁)是一个很有用的工具类,利用它我们可以拦截一个或多个线程使其在某个条件成熟后再执行。它的内部提供了一个计数器,在构造闭锁时必须指定计数器的初始值,且计数器的初始值必须大于0。另外它还提供了一个countDown方法来操作计数器的值,每调用一次countDown方 ...
Java并发-Semaphore
概述Semaphore(信号量)是AQS共享模式的一个应用,可以允许多个线程同时对共享资源进行操作,并且可以有效的控制并发数,利用它可以很好的实现流量控制。Semaphore提供了一个许可证的概念,可以把这个许可证看作车票,只有成功获取车票的人才能够上车,并且车票是有数量的,不可能毫无限制的发下去, ...
Java并发-CyclicBarrier
概述现实生活中经常会遇到这样的情景,在进行某个活动前需要等待人全部都齐了才开始。例如吃饭时要等全家人都上座了才动筷子,旅游时要等全部人都到齐了才出发,比赛时要等运动员都上场后才开始。在J.U.C包中提供了一个同步工具类能够很好的模拟这类场景,它就是CyclicBarrier类。利用CyclicBar ...
面试案例-设计一个短连接服务
背景你平时是否留意过一些垃圾短信中包含短链接?就像下面这样: 为什么要选择这种短连接方式?用这种方式的好处是什么?怎么设计一个短连接生成服务呢? 短URL的好处 短:短信和许多平台(微博)有字数限制,太长的链接加进去都没有办法写正文了。 好看:比起一大堆不知所以的参数,短链接更加简洁友好。 方便统计 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in ...
Java并发-AQS源码分析之条件队列
概述通过之前的分析,深入了解了AbstractQueuedSynchronizer的内部结构和一些设计理念,知道了AbstractQueuedSynchronizer内部维护了一个同步状态和两个排队区,这两个排队区分别是同步队列和条件队列。拿ATM机取款举例,ATM机如下图所示: 同步队列是主要的排 ...
Java并发-AQS源码分析之独占模式
AQS为在独占模式下获取锁分别提供三种获取方式: 不响应线程中断获取; 响应线程中断获取; 设置超时时间获取。 这三种方式整体步骤大致是相同的,只有少部分不同的地方:第一种在获取时会忽略中断;而第二种则是获取时响应中断;第三种是获取时,如果超时则立即返回。 不响应线程中断获取锁//不响应 ...
Java并发-AQS源码分析之共享模式
AQS为在共享模式下获取锁分别提供三种获取方式: 不响应线程中断获取; 响应线程中断获取; 设置超时时间获取。 这三种方式整体步骤大致是相同的,只有少部分不同的地方:第一种方式,如果当前线程在获取资源时被中断了,它会忽略这个中断,当获取资源返回后才对中断进行处理;第二种方式则不同,如果当前 ...
Java并发-AQS源码分析之概要分析
AbstractQueuedSynchronizer是做什么的java.util.concurrent这个包下有很多类,比如ReentrantLock、CountDownLatch、CyclicBarrrier、Semaphore等,它们的实现中都有一个内部类Sync,这个类继承了AbstractQ ...
由剔除Intellij中Mybatis的Mapper自动注入警告引入对注解的学习
起源相信使用Mybatis的小伙们一定经常编写类似如下的代码: 可以看到 userMapper 下有个红色警告。虽然代码本身并没有问题,能正常运行,但有个警告总归有点恶心。先看下警告信息: Spring team recommends: “Always use constructor based ...