随笔分类 -  JUC

摘要:JUC中的同步器三个主要的成员:CountDownLatch、CyclicBarrier和Semaphore。这三个是JUC中较为常用的同步器,通过它们可以方便地实现很多线程之间协作的功能。 一、概述 CountDownLatch是基于AQS实现,当构建count对象时,传入的值其实就会赋值给AQS 阅读全文
posted @ 2022-04-25 16:22 夏尔_717 阅读(74) 评论(0) 推荐(0) 编辑
摘要:一、概述 Exchanger是一个用于线程间协作的工具类,Exchanger用于进行两个线程间(只能两个)的数据交换,它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据,如果第一个线程先执行exchange方法,它会一直等待第二个线程也执行exch 阅读全文
posted @ 2022-04-25 16:20 夏尔_717 阅读(81) 评论(0) 推荐(0) 编辑
摘要:一、概述 CyclicBarrier基于ReentrantLock和Condition等待唤醒的功能实现的,在构建CyclicBarrier时,会将count-1,操作count值是直接使用ReentrantLock来保证线程安全性,如果count不为0时,则添加condition队列中,如果等于0 阅读全文
posted @ 2022-04-25 16:20 夏尔_717 阅读(51) 评论(0) 推荐(0) 编辑
摘要:一、简介 并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Collections.synchronizedMap()以及Hashtable,ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求。 Concurre 阅读全文
posted @ 2022-04-25 16:20 夏尔_717 阅读(386) 评论(0) 推荐(0) 编辑
摘要:一、简介 Phaser(阶段)是java 7引入的新的并发API,它适用于这样一种场景,一个大任务可以分为多个阶段完成,且每个阶段的任务可以多个线程并发执行,但是必须上一个阶段的任务都完成了才可以执行下一个阶段的任务。所以Phaser特别适合使用在重复执行或者重用的情况。 这种场景虽然使用Cycli 阅读全文
posted @ 2022-04-25 16:19 夏尔_717 阅读(216) 评论(0) 推荐(0) 编辑
摘要:一、简介 线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处 阅读全文
posted @ 2022-04-25 15:20 夏尔_717 阅读(849) 评论(0) 推荐(0) 编辑
摘要:一、简介 AbstractQueuedSynchronizer(简称AQS),抽象的队列式的同步器,是Java并发包实现的基类。 AQS用来构建锁和同步器的框架,使用AQS能简单且高效地构造出大量的应用广泛的同步器,如常用的ReentrantLock、Semaphore、CountDownLatch 阅读全文
posted @ 2022-04-24 11:28 夏尔_717 阅读(210) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示