锁:可重入锁,可中断锁,公平锁,读写锁

 1.可重入锁:

如果锁具备可重入性,称为可重入锁。

Synchronized和ReentrantLock是可重入锁,可重入性表明了锁是基于线程的分配,而不是基于方法调用的分配。

   2.可中断锁:

 Synchronized是不可中断锁,Lock是可中断的锁。

如果某一线程A正在执行锁中的代码,另一线程B正在等待获取该锁,可能由于等待时间过长,线程B不想等了,想先处理其他事情,可以让他中断自己或者在别的线程中中断他。

  3.公平锁:Synchronized

尽量以请求锁的顺序来获取锁,比如同时有多个线程在等待同一个锁,当这个锁被释放时,等待时间最久的线程挥霍的该锁。

非公平锁无法保证锁的获取是按照请求锁的顺序进行的,这样可能导致某个或者一些线程永远获取不到锁。

4.读写锁:ReadWriteLock

读写锁将对一个资源的访问分成了两个锁,一个读锁,一个写锁。

读写锁让多个线程之间的读写操作不会发生冲突。

readLock()得到读锁,writeLock()得到写锁。



你可能感兴趣的:(锁:可重入锁,可中断锁,公平锁,读写锁)