公平锁: 每个线程获取锁的顺序是按照线程访问锁的先后顺序获取的,最前面的线程总是最先获取到锁。公平锁的优点是按序平均分配锁资源,不会出现线程饿死的情况,它的缺点是按序唤醒线程的开销大,执行性能不高
非公平锁: 每个线程获取锁的顺序是随机的,并不会遵循先来先得的规则,所有线程会竞争获取锁。非公平锁的优点是执行效率高,谁先获取到锁,锁就属于谁,不会“按资排辈”以及顺序唤醒,但缺点是资源分配随机性强,可能会出现线程饿死的情况。synchronize
是非公平锁
在 Java 语言中,锁的默认实现都是非公平锁,原因是非公平锁的效率更高