Java并发_1.1 工具分类

本文深入探讨了Java并发编程的核心概念,包括线程池、各种锁、原子类和并发容器的使用。同时介绍了ThreadLocal和final作为并发战略,以及CAS和AQS两大并发原理。此外,还涵盖了线程协作工具如CountDownLatch和CyclicBarrier。通过理解这些工具和策略,可以提升多线程环境下的程序效率和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容:

1.并发工具:

  1. 线程池:Excutor

  2. 各种锁:悲观锁、乐观锁、共享锁、公平锁、可重入锁、自旋锁

  3. 原子类:atomic包

  4. 并发容器:ConcurrentHashMap、CopyOnWriteArrayList、各种阻塞队列

2.两种战略:

  1. ThreadLocal:空间换时间

  2. final:以不变应万变

3.两大原理:

CAS原理

AQS框架

4.一种领导力

并发流程控制能力

并发工具分类:

1.为了并发安全;

为了线程安全(底层原理)

  • 互斥同步:
    使用各种互斥同步的锁

    synchronize

    ReentrantLock(可重入锁)

    ReadWriteLock(读写锁)

    。。。

    使用同步的工具类(比较少用,性能较差)

    Collections.synchronizedList(new ArrayList())等

    Vector等

  • 非互斥同步:如:atomic包,原子类
    Atomic*基本类型原子类
    • AtomicInteger:整形原子类

    • AtomicLong:长整形原子类

    • AtomicBoolean:布尔型原子类

    Atomic*Array数组类型原子类(数组里的元素也保证原子性)
    • AtomicIntegerArray:整形数组原子类

    • AtomicLongArray:长整形数组原子类

    • AtomicReferenceArray:引用类型数组原子类

    Atomic*Reference引用类型原子类
    • AtomicReference:引用类型原子类

    • AtomicStampedReference:引用类型原子的升级,带时间戳,可以解决ABA问题

    • AtomicMarkableReference

    Atomic*FieldUpdater升级原子类
    • 用Atomic*FieldUpdater等升级自己的变量

    • AtomicIntegerFieldUpdater:原子更新整形字段的更新器

    • AtomicLongFieldUpdater:原子更新长整型字段的更新器

    Adder加法器(1.8)比AtomicLong强
    • LongAdder

    • DoubleAdder

    Accumulator累加器(1.8)比Adder强
    • LongAccumulator

    • DoubleAccumulator

  • 结合互斥和非互斥同步—线程安全的并发容器
    ConcurrentHashMap(重点,结合了CAS、synchronized)
    CopyOnWriteArrayList
    并发队列之阻塞队列
    • ArrayBlockingQueue

    • LinkedBlockingQueue

    • PriorityBlockingQueue

    • SynchronousQueue

    • DelayedQueue

    • TransferQueue

    并发队列之非阻塞队列
    • ConcurrentLinkedQueue
    ConcurrentSkipListMap和ConcurrentSkipListSet
  • 无同步方案:
    final关键字
    线程封闭
    • ThreadLocal
    栈封闭

    为了线程安全(使用者角度)

    避免共享变量

    线程封闭
    ThreadLocal

    共享变量,但限制

    互斥同步,使用各种互斥同步的锁

    ​ synchronized

    ​ Lock接口的相关类

    final关键字

    使用成熟工具类

    线程安全的并发容器
    ConcurrentHashMap
    CopyOnWriteArrayList
    并发队列
    ConcurrentSkipListMap和ConcurrentSkipListSet
    使用同步的工具类
    atomic包,原子类

2.管理线程,提高效率;

线程池相关类

Executor
Executors
ExecutorService
常见线程池
FixedThreadPool
CachedThreadPool
ScheduledThreadPool
SingleThreadExecutor
ForkJoinPool

​ …

能获取子线程的运行结果

Callable
Future
FutureTask

3.线程协作配合。

CountDownLatch

​ 倒数

CyclicBarrier

Semaphore

​ 限制总数量

Condition

Exchanger

​ 交换

Phaser

AQS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值