Java中的锁以及CountDownLatch/CyclicBarrier/Semaphore的线程排序

跟MySQL的锁有区别也有关系

公平锁和非公平锁

 ReentrantLock默认是非公平的,但是如果加了true就是公平锁。非公共锁吞吐量比公平锁大。
synchronized也是非公平锁。
可重入锁(递归锁ReentrantLock/synchronized):同一线程外层函数获得锁之后,内层递归函数仍然能获取该锁的代码,即线程可以进入任何一个它已经拥有的锁所同步着的代码块。是同一把锁,可重入锁的最大作用就是避免死锁

自旋锁(CAS思想+Unsafe类如原子引用)

指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU。
手写一个自旋锁:

 独占锁(写锁)/共享锁(读锁)/互斥锁

独占锁:该锁一次只能被一个线程所持有,对ReentrantLock和Synchronized都是独占锁。
共享锁:该锁能被多个线程所共享持有。对ReentrantReadWriteLock,用什么锁调用各自方法,其读锁是共享锁,其写锁

Java中的锁以及CountDownLatch/CyclicBarrier/Semaphore的线程排序最先出现在Python成神之路

版权声明:
作者:ht
链接:https://www.techfm.club/p/13846.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>