同一线程进入两次临界区_JAVA中有哪些线程同步

6e7bfcc4620db7b7afda68fd547c0a20.png

在最前面写点这周的关键词,深沉的心,自我否定不可取,着力点,接地气,真诚,时间成本,换位思考,幽默。
下面是总结Java线程同步都有哪些方式 线程同步指的是线程之间的协调和配合,是多线程环境下解决线程安全与效率的问题的关键。线程同步的方式和机制有临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)四种方式..
  • 临界区:在同一时刻只允许一个线程执行的代码块被称为临界区,临界区通常用锁机制来实现。
  • 互斥量:互斥量是一个对象,只有拥有互斥对象的线程才被允许访问共享资源。由于互斥对象只有一个,因此能保证共享资源不会同时被多个线程访问。
  • 信号量:信号量允许有限数量的线程在同一时刻访问同一资源,当访问这一资源的线程数达到信号量所设置的上限时,其它试图访问资源的线程将被阻塞。
  • 事件:通过发送“通知”形式来实现线程的同步

Java中常见的线程同步有

  1. volatile关键字:用于解决线程间内存的可见性问题。

  2. Synchronized:  在语法层面提供的一种基于对象监视器的同步锁。

  3. wait()/notify()/notifyAll(): 基于synchronized提供的对象同步锁实现线程同步。

  4. cas操作:基于CPU的CAS指令实现的无阻塞原子操作。

  5. atomic包:基于CAS和Volatile实现的原子操作实现类。

  6. Lock自旋锁:基于CAS操作实现的一种非阻塞乐观锁

  7. Condition条件变量:提供基于Lock锁的条件控制,其await()/signal()/signalAll()方法用于实现类似wait()/notify()/notifyAll()的同步机制。

  8. 线程安全类:提供各种线程安全的容器类或工具对象。

  9. ThreadLocal:每个线程提供临时持有和传递对象的方法。

  10. CountDownLatch: CountDownLatch计数器实现倒计数功能。

  11. CyclicBarrierzhan栅栏: 用于协调线程的步调,确保它们保持一致。

  12. Semaphore信号量:  用于限制访问某个资源的线程数。

  13. Fork/join: fork/join框架,一种支持任务拆分、多任务并行处理与结果合并的框架。

你可能还想看

Java Volatile关键字分析(一)

Java Volatile关键字分析(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值