![](https://img-blog.csdnimg.cn/direct/f0336a50ce9b433599688cea46376dcd.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA并发
文章平均质量分 72
JAVA并发
programmer_山风
程序员自媒体新星,欢迎关注,点赞收藏不迷路
展开
-
【JAVA并发】CyclicBarrier
CyclicBarrier 从字面意思上可以翻译成循环栅栏,或者循环屏障。设立一个屏障,让一组线程都等待完成后(或都到达同一状态后),再继续下一步行动。原创 2022-09-08 16:58:06 · 151 阅读 · 0 评论 -
【JAVA并发】Semaphore:信号量的使用
Semaphore 也叫信号量,在 JDK1.5 被引入,主要用于在多个线程访问多个共享资源的场景下,通过协调各个线程,来保证合理的资源访问。例如数量有限的餐厅桌椅,银行业务办理窗口等。原创 2022-09-08 15:24:50 · 1662 阅读 · 0 评论 -
【JAVA并发】CountDownLatch
CountDownLatch 定义了一个计数器,和一个阻塞队列, 当计数器的值递减为 0 之前,阻塞队列里面的线程处于挂起状态,当计数器递减到 0 时会唤醒阻塞队列所有线程,这里的计数器是一个标志,可以表示一个任务一个线程,也可以表示一个倒计时器,CountDownLatch 可以解决那些一个或者多个线程在执行之前必须依赖于某些必要的前提业务先执行的场景,例如主线程要等待所有子线程执行完再执行,老师要等待所有考生都交卷再离开考场……原创 2022-09-08 10:31:57 · 397 阅读 · 0 评论 -
【JAVA并发】CAS(第二弹)
上文说到,CAS在更新值的时候,会判断要修改的A 是否和预期值相同,如果相同则更新新值。但会存在一种情况:线程 t2 在 t1 写回前,已经读取 A,修改成了 B,又修改成了 A,再写回时,满足要修改的值和预期值相同,更新成功。整个过程 t1 是无法知道的, t1 在更新时也能成功;而之后 t2 如果还想用 A,就读取不到了,因为已经是 t1 修改后的 B,这就造成了数据不一致的问题。产生ABA问题的代码示例:目前在 JDK 的 atomic 包里提供了一个类 AtomicStampedReferen原创 2022-08-19 16:53:04 · 142 阅读 · 0 评论 -
【JAVA并发】CAS(第一弹)
一、什么是CASCAS(Compare And Swap),比较并交换;它将内存位置的内容与给定值进行比较,只有在相同的情况下,才将该内存位置的内容修改为新的给定值。二、Java中如何实现CAS三、CAS在JUC下的应用四、CAS存在的问题1、ABA问题2、循环时间长开销大3、只能保证一个共享变量的原子操作........................原创 2022-08-14 17:49:12 · 276 阅读 · 0 评论