目录
乐观锁
比较乐观的思想,认为在读的时候不会被修改,所以不会加锁。适用于读多写少的情况。
CAS:
比较并替换,比较当前值(主内存中的值),与预期值(当前线程中的值,主内存中值的一份拷贝)是否一样,一样则更新,否则继续进行CAS操作。
悲观锁
悲观锁:比较悲观,认为什么情况下都不安全,所以一直都加锁。
实现:Lock、synchronized
共享锁
共享锁:自己读取资源的同时,也允许别的线程一块读取。读锁。
实现:ReadLock,ReentrantReadWriteLock。
独占锁
独占锁:自己占有的资源不允许别人再次获取。
实现:WriteLock,synchronized,ReentrantLock
公平锁
公平锁:多个线程同时访问一块数据,线程按照先来后到的顺序进行访问对应的资源。
实现:ReentrantLock(参数)
比如我们去领快递排队一样,先来后到。
非公平锁
非公平锁:多个线程同时访问一块数据,线程谁先抢到对应的资源谁先使用。
实现:ReentrantLock、synchronized
比如超时搞促销活动,谁先抢到是谁的。
可重入锁
可重入锁:获取过锁的线程,不释放锁之前,是否能够重复