
java并发包
song_suo
程序员
展开
-
cas机制
cas是一种乐观策略,他基于比较-替换的思路。现在的cpu大多数支持cas操作。 java并发包中有些类直接用到了cas机制比如AtomicInteger类 private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long valueOffset; static {原创 2017-03-21 12:40:07 · 345 阅读 · 0 评论 -
CyclicBarrier
循环栅栏的意思,除了能实现CountDownLatch的作用外,更加强大的地方在于循环。run方法有几个await,就循环几次。把所有的await凑齐,就是一次循环结束。新增加的特性是每次循环一遍,就会执行我们指定的一个线程,这个Runnable对象从CyclicBarrier构造函数传进去。下面的代码模拟了这样一个场景,长官集合队伍,把人集合完毕后,下命令干活。都干完活后,下命令收队。public原创 2017-04-07 09:51:50 · 216 阅读 · 0 评论 -
信号量 Semaphore
信号量为多线程协作提供了更为强大的控制方法。广义上说,信号量是对锁的扩展。信号量可以指定多个线程,同时访问一个资源。public Semaphore(int permits) public Semaphore(int permits,boolean fair)下面给一个例子,有20个人吃饭,但是只有5张桌子,所以要用信号量控制一下。public class SemaphoreTest { p转载 2017-04-07 10:22:49 · 241 阅读 · 0 评论 -
copy-on-write容器
写时复制,见名知义,就是在写的时候,进行复制。 jdk中的CopyOnWriteArrayList实现了这种技术。在高并发的读多写少的场景下,比如系统级别的信息,往往只是需要加载到内存,很少有修改的必要。在高并发场景下,虽然有读写锁的概念,但是读跟写依然是串行的。如果我们为了高效的读,可以容忍写慢一点,可以用这样一种机制,就是读的时候是无锁的,哪怕是读写同时进行,那么如果保持数据的一致性呢?我们知原创 2017-04-05 20:52:40 · 547 阅读 · 0 评论