公平锁
想使用资源?一个个按顺序排队!
好处也就是排队的好处,大家伙慢慢排,最终大家都有资源用。
坏处就是除了排队的第一个人,都得等着排队,想都别想拿到,对应线程的阻塞,但要知道,事实上CPU唤起阻塞线程的代价是比较高的。
非公平锁
不想排队? 那就插队!多个人同时去抢资源,有人先抢到,那么其他人就会进入等待队列,进行阻塞。
好处在于,可以减少CPU唤起阻塞线程的开销。
坏处在于,可能会出现操作系统中讲过的"饿死"现象,即长时间获取不到资源。
ReentrantLock支持公平锁和非公平锁,但默认非公平锁。