
并发编程
文章平均质量分 70
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 · 162 阅读 · 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 · 149 阅读 · 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 · 104 阅读 · 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 · 287 阅读 · 0 评论