java多线程
Light_shineWang
这个作者很懒,什么都没留下…
展开
-
读写锁ReentrantReadWriteLock锁降级
读写锁ReentrantReadWriteLock简介ReentrantReadWriteLock是ReadWriteLock接口的实现,ReentrantReadWriteLock中有两个静态内部类:ReadLock读锁和WriteLock写锁,这两个锁实现了Lock接口,ReentrantReadWriteLock支持可重入,同步功能依赖自定义同步器(AbstractQueuedSynchron原创 2017-07-06 11:29:49 · 574 阅读 · 1 评论 -
一种基于CAS生成唯一ID的方法
很多业务系统中有类似的需求:生成一个唯一的ID,作为订单记录,一般ID中存在一个时间戳。为了防止多线程生成重复,我们会在方法上加锁,同时,对于集群的情况,会给每台机器编号,这样一般能保证唯一性。根据这个思路,我们一般会写如下的代码来实现原创 2017-10-24 19:46:15 · 1154 阅读 · 0 评论 -
Treiber Stack
Treiber Stack是基于CAS实现的无锁竞争的线程安全stack,jdk8的FutureTask也通过一个简单的Treiber Stack来维护等待线程。以下是具体的Treiber Stack的java实现:public class TreiberStack<E> { AtomicReference<Node<E>> top = new AtomicReference<>();原创 2017-10-25 11:33:35 · 431 阅读 · 0 评论