悲观锁:简而言之,两个线程抢占一份资源时。当一个线程拿到资源时。加锁,阻塞,其他线程禁止访问、java sycnosized就是悲观锁
乐观锁:简而言之,两个线程抢占一份资源时,不会对资源加锁,只有在提交事务时会根据version判断,其他线程有没有修改数据。
通常是对数据库加上version版本标志。提交数据时,将提交的数据与之前的版本对比,如果大于则更新。如果等于或小于,则驳回
CAS:无锁实现并发,自旋。将内存中的将要被修改的数据与预期的值进行比较,如果这两个值相等就修改值为新值,否则就不做操作
公平锁和非公平锁 :ReentrantLock 不做解释
独占锁:每次只有一个线程能访问这个资源。悲观锁也是独占锁
共享锁:ReadWriteLock
原文:https://www.cnblogs.com/jayjie/p/11571941.html