在最前面写点这周的关键词,深沉的心,自我否定不可取,着力点,接地气,真诚,时间成本,换位思考,幽默。
下面是总结Java线程同步都有哪些方式 线程同步指的是线程之间的协调和配合,是多线程环境下解决线程安全与效率的问题的关键。线程同步的方式和机制有临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)四种方式..
下面是总结Java线程同步都有哪些方式 线程同步指的是线程之间的协调和配合,是多线程环境下解决线程安全与效率的问题的关键。线程同步的方式和机制有临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)四种方式..
- 临界区:在同一时刻只允许一个线程执行的代码块被称为临界区,临界区通常用锁机制来实现。
- 互斥量:互斥量是一个对象,只有拥有互斥对象的线程才被允许访问共享资源。由于互斥对象只有一个,因此能保证共享资源不会同时被多个线程访问。
- 信号量:信号量允许有限数量的线程在同一时刻访问同一资源,当访问这一资源的线程数达到信号量所设置的上限时,其它试图访问资源的线程将被阻塞。
- 事件:通过发送“通知”形式来实现线程的同步
Java中常见的线程同步有
volatile关键字:用于解决线程间内存的可见性问题。
Synchronized: 在语法层面提供的一种基于对象监视器的同步锁。
wait()/notify()/notifyAll(): 基于synchronized提供的对象同步锁实现线程同步。
cas操作:基于CPU的CAS指令实现的无阻塞原子操作。
atomic包:基于CAS和Volatile实现的原子操作实现类。
Lock自旋锁:基于CAS操作实现的一种非阻塞乐观锁
Condition条件变量:提供基于Lock锁的条件控制,其await()/signal()/signalAll()方法用于实现类似wait()/notify()/notifyAll()的同步机制。
线程安全类:提供各种线程安全的容器类或工具对象。
ThreadLocal:每个线程提供临时持有和传递对象的方法。
CountDownLatch: CountDownLatch计数器实现倒计数功能。
CyclicBarrierzhan栅栏: 用于协调线程的步调,确保它们保持一致。
Semaphore信号量: 用于限制访问某个资源的线程数。
Fork/join: fork/join框架,一种支持任务拆分、多任务并行处理与结果合并的框架。
你可能还想看
Java Volatile关键字分析(一)
Java Volatile关键字分析(二)