
juc
文章平均质量分 73
Shacoray
这个作者很懒,什么都没留下…
展开
-
JUC-java并发编程-并发工具类- 线程安全的集合类-ConcurrentHashMap用法(1)
JUC线程安全的集合类-ConcurrentHashMap(1)错误用法:1.将26个英文字母打散,每个字母出现两百次,将字母平均分到26个txt文件中。先创建测试文件/** * 初始化数据 * 单词计数 * @author jiangl * @version 1.0 * @date 2021/4/15 14:58 */public class InitDataClass{ static final String ALPHA = "abcdefghijklmnopqrstuv原创 2021-04-19 15:37:39 · 312 阅读 · 0 评论 -
JUC-java并发编程-并发工具类- 线程安全的集合类(1)
JUC线程安全的集合类线程安全集合列可以分为三大类:1.遗留的线程安全集合类:Hashtable,VectorHashtable(Since: JDK1.0)中的所有方法都是加了synchronized的锁(并发度很低)。public synchronized V put(K key, V value) { // Make sure the value is not null if (value == null) { throw new NullPointerEx原创 2021-04-19 15:22:36 · 160 阅读 · 0 评论 -
JUC-java并发编程-并发工具类-CyclicBarrier
JUCCyclicBarrierCyclicBarrier循环栅栏,用来进行线程协作,等待线程满足某个计数。构造时设计【计数个数】,每个线程执行到某个需要“同步“的时刻代用await()方法进行等待,当等待的线程数满足【计数个数】时,继续执行。相较于CountDownLatch,CyclicBarrier可以重复循环使用。构造方法:public CyclicBarrier(int parties, Runnable barrierAction) { if (parties <= 0原创 2021-04-19 14:39:25 · 197 阅读 · 0 评论 -
JUC-java并发编程-并发工具类-CountDownLatch
JUCCountDownLatchcountDownLatch用来进行线程同步协作,等待所有线程完成倒计时。例子:public class CountDownLatchTest2 { public static void main(String[] args) { CountDownLatch countDownLatch = new CountDownLatch(3); new Thread(()->{ log.info原创 2021-04-16 16:35:58 · 147 阅读 · 0 评论 -
JUC-java并发编程-并发工具类-StampedLock源码
JUCSemaphoreSempahore原理类图:Sempahore的构造方法有两个public Semaphore(int permits) { //默认非公平的 sync = new NonfairSync(permits);}public Semaphore(int permits, boolean fair) { sync = fair ? new FairSync(permits) : new NonfairSync(permits);}实例代码:原创 2021-04-16 16:15:33 · 103 阅读 · 0 评论 -
JUC-java并发编程-并发工具类-Semaphore(1)
JUCSemaphore信号量,用来限制能同时访问共享资源的线程上限(单机限流)。单位时间内,只允许 设定数量的线程执行,超过数量的线程进入阻塞。等到执行中线程调用release()释放了资源,阻塞线程竞争资源继续执行。Semaphore可以设置公平与非公平两种模式,非公平模式在竞争Sempahore资源的时候不会判断等待队列是否有线程阻塞,公平模式则在acquire()方法中先判断等待队列中是否有阻塞线程,存在则排队到队列中。使用例子:public class SemaphoreTest {原创 2021-04-16 14:14:24 · 239 阅读 · 0 评论 -
JUC-java并发编程-并发工具类-StampedLock
JUCstampedLockjava.util.concurrent.locks.StampedLock该类自JDK8加入,是为了进一步优化读性能,它的特点是在使用读锁、写锁时都必须配合【戳】使用加解读锁 stamp = lock.readLock(); lock.unlockRead(stamp);加解写锁 long stamp = lock.writeLock(); lock.unlockWrite(stamp);乐观读,StampedLock支持tryOp原创 2021-04-16 13:58:48 · 285 阅读 · 0 评论