Java锁机制总结
2021-05-06 19:27
标签:阶段 轻量 orange count 实现 总结 其他 允许 动作 synchronzied CountDownLatch 【 倒计时闩锁 】 https://www.cnblogs.com/sweetorangezzz/p/13186587.html 当计数为0的时候,下一步的动作实施者是main函数。 CyclicBarrier 【 篱栅 】 达到一定计数,下一步动作实施者是“其他线程”。 Semaphore 【信号标】 Semaphore与CountDownLatch相似,不同的地方在于Semaphore的值被获取到后是可以释放的,并不像CountDownLatch那样一直减到底。它也被更多地用来限制流量,类似阀门的 功能。如果限定某些资源最多有N个线程可以访问,那么超过N个主不允许再有线程来访问,同时当现有线程结束后,就会释放,然后允许新的线程进来 Phaser 【阶段器】 https://www.cnblogs.com/sweetorangezzz/p/13188210.html Phaser它也被称为“阶段器”,可以用它来控制多线程分阶段共同完成的问题 Exchanger 【交换器】 Exchanger用于进行线程间的数据交换 LockSupport 【锁支持】 https://www.cnblogs.com/sweetorangezzz/p/13186874.html 主要是为了阻塞和唤醒线程用的 ReentrantReadWriteLock 【可重入读写锁】 https://www.cnblogs.com/sweetorangezzz/p/13186796.html 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了 ReentrantLock https://www.cnblogs.com/sweetorangezzz/p/13189193.html https://www.cnblogs.com/sweetorangezzz/p/13189170.html 总结: 什么是共享锁和排它锁 共享锁就是允许多个线程同时获取一个锁,一个锁可以同时被多个线程拥有。 排它锁,也称作独占锁,一个锁在某一时刻只能被一个线程占有,其它线程必须等待锁被释放之后才可能获取到锁。 ReentrantReadWriteLock 、ReentrantLock都 通过 sync 实现了 排他锁 CountDownLatch 、Semaphore、CyclicBarrier 通过 sync 实现了 共享锁 synchronzied 是 JDK 内部实现的锁机制,无锁 ---> 偏向锁 ---> 自旋锁(轻量级锁)---> 重量级锁 Java锁机制总结 标签:阶段 轻量 orange count 实现 总结 其他 允许 动作 原文地址:https://www.cnblogs.com/sweetorangezzz/p/13189247.html
上一篇:C#-MDI-多窗口通信方法总结
下一篇:SpringMVC简单案例