栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

同步工具笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

同步工具笔记

Semaphore 信号量

控制同时访问资源的线程数量,类似于令牌桶。基于aqs实现
关键用法

Semaphore semaphore = new Semaphore(3,true);
semaphore.acquire();//子线程开始前调用
semaphore.release();//同一个子线程结束后调用
CountDownLatch

等待其它线程执行完以后再执行。基于aqs实现

ConutDownLatch latch = new CountDownLatch();
latch.countDown();//子线程执行结束后调用
latch.await();//主线程
CyclicBarrier 回环栅栏

多个线程等到某个状态后同时执行。基于ReentrantLock+Condition实现。

CyclicBarrier barrier = new CyclicBarrier(5);
barrier.await();//子线程开始前调用
Exchanger

数据交换,用于线程间的通信。共享变量node,基于cas+park/unpark

Exchanger exchanger = new Exchanger();
exchanger.exchange(...);//交换数据的多个线程调用
Phaser

jdk1.7后开始提供,可用来取代CountDownLatch和CyclicBarrier

Phaser phaser = new Phaser(2);

//取代CountDownLatch方法
phaser.arrive();
phaser.awaitAdvance(phaser.getphase());

//取代CyclicBarrier方法
phaser.awaitAdvance(0);

新特性

1、动态调整线程个数
2、内部采取树状存储,父节点对子节点无感知,子节点维护父节点

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1032561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号