多线程并发总结二 各种Java工具

本文总结了Java中多线程并发编程的各种工具,包括Atomic变量、锁、Semaphore、Latch/Cyclic Barrier、Exchanger、Volatile、Final、Concurrent Map、CopyOnWriteArrayList和Executor。重点讨论了它们的用法、优缺点及适用场景,帮助开发者更好地理解和运用这些并发工具。
摘要由CSDN通过智能技术生成

这里总结一下Java提供的一些多线程开发工具。

  • Atomic变量
  • 代码排斥/等待,唤醒
  • Semaphore
  • Latch / Cyclic Barrier
  • Exchanger
  • Volatile
  • Final
  • Concurrent Map
  • CopyOnWriteArrayList
  • Executor

Atomic变量

Atomic变量最主要的是解决了普通Java变量读写操作的原子性问题。其提供了好多方法把对一个变量需要同时做的事情合并在一起,例如AddAndGet,DecreaseAndGet。另外还有compareAndSet的方法,这个有点特别是非阻塞的,后面会详细论述。

优点就是:简单,只要把例如Integer换成AtomicInteger就可。运行效率高,不会导致死锁。

限制:只能用于单个共享变量的场景。

代码块排斥/等待,唤醒

通过提供了synchronize, wait, notify, notifyAll的这几个机制,我们可以实现到对代码块的排斥和控制,包括

  • 正常进入排斥区 Monitor Enter
  • 正常离开排斥区 Monitor Exit
  • 等待某条件成熟暂时离开排斥区 Monitor Exit
  • 已具备条件重新进入排斥区 Monitor Enter

经典的代码段像下面,通过组合几个关键词可以实现到通过逻辑控制某代码块的执行与否。

    Integer i=0;

    public void toConsume() throws InterruptedExcept
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值