java面试-谈谈对锁的理解

一、公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解

公平锁:多个线程按照申请的顺序来获取锁。

非公平锁:多个线程获取锁的先后顺序与申请锁的顺序无关。【ReentrantLock 默认非公平、synchronized】

总结:非公平锁的吞吐量比公平锁大。

可重入锁(又名递归锁):线程可以进入任何一个它已经获取锁的同步代码块中。

可重入锁的最大作用:避免死锁

独占锁:

共享锁:

自旋转:是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁。

好处:减少线程上下文切换的消耗,

缺点:循环会消耗CPU

二、请手写一个自旋锁

猜你喜欢

转载自www.cnblogs.com/wjh123/p/11117932.html