并发编程 - 工具类
hongbo.li
牛逼
展开
-
Semaphore -信号量、实现限流
信号量模型一个计数器、一个等待队列、三个方法。计数器和等待队列对外是透明的三个方法:Init(); 初始化计数器down(); 计数器的值-1;如果此时计数器的值小于0,则当前线程将被阻塞,否则当前线程继续执行; – 在Semphore中是acquire()方法up(); 计数器的值+1;如果此时计数器的值大于或等于0,则唤醒等待队列中的一个线程,并将其从等待队列中移除; – 在Se...原创 2019-12-12 13:38:56 · 1079 阅读 · 1 评论 -
ReadWriteLock - 读写锁
读写锁三条基本原则允许多个线程同时读共享变量;只允许一个线程写共享变量;如果一个写线程正在执行写操作,此时禁止读线程读共享变量。读写锁允许多个线程同时读共享变量,适用于读多写少的场景读写锁的写操作是互斥的,当一个线程在写共享变量的时候,是不允许其他线程执行写操作和读操作公平性选择:支持公平与非公平(默认)的锁获取方式,吞吐量非公平优先于公平。可重入:读线程获取读锁之后可以再次获...原创 2019-12-12 13:36:00 · 157 阅读 · 0 评论 -
StampedLock - 更快的读写锁
StampedLock 支持的三种锁模式写锁:只允许一个线程获取到写锁,有读锁的时候会被阻塞,无法获取到写锁悲观读锁:允许多个线程获取到读锁乐观读:这种方式是不加锁的StampedLock 获取到悲观读锁和写锁会返回stamp对象,解锁的时候需要传这个stampfinal StampedLock sl = new StampedLock();// 获取/释放悲观读锁示意代码lon...原创 2019-12-12 13:29:17 · 274 阅读 · 0 评论