并发
文章平均质量分 92
灵性的韭菜选手
知耻而后勇
展开
-
同步工具-ReentrantLock
ReentrantLock 我们主要看ReentrantLock的Lock,unlock这两个公平和非公平的实现 还有Condition的实现。其实我一直都很疑惑,为啥ReentrantLock,CountDownLatch等类都是基于AQS实现的,那么为啥不直接继承AQS而是内部引用一个AQS的实现类呢,这里ReentrantLock给出了答案,它内部提供公平和非公平的实现,而这两个模式则...原创 2019-03-19 22:20:46 · 145 阅读 · 0 评论 -
同步工具-Synchronizer
1.状态依赖性 在一个单线程环境中,如果调用一个方法之前 没有满足进入该方法的先决条件(比如要去一个空的队列里获取对象),那么这个方法就永远不能进入。因为这个先决条件永远不会改变,所以这个方法就只能返回失败了。该方法依赖对象的状态。 而在多线程的环境中,这个先决条件很有可能被其他线程所改变,例如A线程想要从一个空的连接池中获取一个连接,当然此刻A线程的操作是失败的,但是后续的B线程归还了一...原创 2019-03-16 17:51:40 · 276 阅读 · 0 评论 -
同步工具-Synchronizer(2) 独占模式
Synchronizer. 铺垫了这么多,终于到了我们的Synchronizer了。其实jdk的很多阻塞工具都是基于一个通用的类构建的例如ReentrantLock,FutureTask,Semaphore,CountDownLatch等等,这个就是AbstractQueuedSynchronizer。AQS也是面试当中很容易问到的一环。 ReentrantLock,FutureTask...原创 2019-03-17 18:15:54 · 257 阅读 · 0 评论 -
同步工具-Synchronizer(3) 共享模式
Synchronzier共享模式. 由于AQS的独占模式release时只能唤醒当前第一个等待的线程,有的时候我们需要通过一次唤醒就能通知多个线程。例如我们常用的CountDownLatch。只要CountDownLatch#countDown方法调用的次数超过了初始化CountDownLatch的次数,那么所有调用CountDownLatch#await的线程将都被唤醒。这是AQS中的独占...原创 2019-03-17 22:21:24 · 390 阅读 · 0 评论 -
同步工具-CountDownLatch
我在本币系统用了一个CountDownLatch实现了一个把一个异步接口变成同步接口的用法。http接口调用的方法,主要是在servlet中的service方法中返回对应的response,然而该service方法中调用的一个异步接口的方法,如果不做限制的话直接返回为空。这里其实可以用future接口,但当时我只会CDL所以这篇文章就看看cdl的源码把。 CountDownLatc...原创 2019-04-09 16:39:41 · 96 阅读 · 0 评论 -
同步工具-FutureTask
FutureTask原创 2019-04-09 16:43:33 · 371 阅读 · 0 评论