本文主要是介绍锁:可重入锁,可中断锁,公平锁,读写锁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.可重入锁:
如果锁具备可重入性,称为可重入锁。
Synchronized和ReentrantLock是可重入锁,可重入性表明了锁是基于线程的分配,而不是基于方法调用的分配。
2.可中断锁:
Synchronized是不可中断锁,Lock是可中断的锁。
如果某一线程A正在执行锁中的代码,另一线程B正在等待获取该锁,可能由于等待时间过长,线程B不想等了,想先处理其他事情,可以让他中断自己或者在别的线程中中断他。
3.公平锁:Synchronized
尽量以请求锁的顺序来获取锁,比如同时有多个线程在等待同一个锁,当这个锁被释放时,等待时间最久的线程挥霍的该锁。
非公平锁无法保证锁的获取是按照请求锁的顺序进行的,这样可能导致某个或者一些线程永远获取不到锁。
4.读写锁:ReadWriteLock
读写锁将对一个资源的访问分成了两个锁,一个读锁,一个写锁。
读写锁让多个线程之间的读写操作不会发生冲突。
readLock()得到读锁,writeLock()得到写锁。
这篇关于锁:可重入锁,可中断锁,公平锁,读写锁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!