JUC
2020-12-01 14:49:37 0 举报
AI智能生成
JUC
作者其他创作
大纲/内容
ConcurrentHashMap
CopyOnWriteArrayList
线程安全的ArrayList;读时无锁,不保证数据是最新的;写时加锁复制副本,进行修改操作
优缺点
优点
只对写加锁,适用高并发下读多写少的场景,比vector强
缺点
增加内存成本
不保证读取数据强一致性,仅保证最终一致
重要方法
add
示例
https://gitee.com/xiangtan/test-xuanwu-programming/blob/master/src/main/java/org/example/JUC/CopyOnWriteTest.java
Semaphore
信号量实现资源并发控制
限制一段代码的并发量,达到限制多个线程对资源的访问
用途:流控等
重要方法
构造函数
初始化最大并发数许可
acquire
获取一个并发许可,当前并发量 +1
release
释放一个并发许可,当前并发量-1
示例
https://gitee.com/xiangtan/test-xuanwu-programming/blob/master/src/main/java/org/example/JUC/SemaphoreTest.java
CountDownLatch
用于线程同步控制
一个或多个线程等待某个操作完成时才继续执行
只能用一次
重要方法
构造函数
初始化一个计数器
countDown
计数器-1
await
阻塞等待计数器置为0
示例
https://gitee.com/xiangtan/test-xuanwu-programming/blob/master/src/main/java/org/example/JUC/CountDownLatchTest.java
CyclicBarrier
用于线程同步控制
一组线程相互等待直到都达到某个设定的屏障点,再一起继续执行
可多次复用
重要方法
构造函数
设置参与线程量 & 最后一个线程完成设定点需要做的事情
await
阻塞等待其他线程完成
reset
重置屏障,复用屏障
代码
https://gitee.com/xiangtan/test-xuanwu-programming/blob/master/src/main/java/org/example/JUC/CyclicBarrierTest.java
Exchanger
用于线程间交换数据
两个线程设置一个同步点,先到同步点的线程会等待后到达的线程,一起执行exchange方法,交换数据
重要方法
exchange
设置同步点进行数据交换的方法
代码
https://gitee.com/xiangtan/test-xuanwu-programming/blob/master/src/main/java/org/example/JUC/ExchangerTest.java
0 条评论
下一页