java锁
https://www.cnblogs.com/lxmyhappy/p/7380073.html
悲观锁(读少写多的场景),乐观锁(读多写少的场景,这样可以提高系统的并发量)
可重入锁:又叫递归锁,是指在同一个线程在调用外层方法获取锁的时候,再进入内层方法会自动获取锁,(可避免死锁)
synchronized void setA() throws Exception{
Thread.sleep(1000);
setB();
}
synchronized void setB() throws Exception{
Thread.sleep(1000);
}
自旋锁:一直循环,直到获取锁
独享锁(ReentrantLock,Synchronized独享锁),共享锁(
ReentrantReadWriteLock,其读锁是共享锁,写锁是独享锁
)
互斥锁(
ReentrantLock具体实现
)和读写锁(
ReentrantReadWriteLock
)
分段锁:例如ConcurrentHashMap (分段锁的设计目的是细化锁的粒度,当操作不需要更新整个数组的时候,就仅仅针对数组中的一项进行加锁操作。)
偏向锁(是指一段同步代码一直被一个线程所访问,那么该线程会自动获取锁。降低获取锁的代价。),轻量级锁,重量级锁