悲观锁:简而言之,两个线程抢占一份资源时。当一个线程拿到资源时。加锁,阻塞,其他线程禁止访问、java sycnosized就是悲观锁

乐观锁:简而言之,两个线程抢占一份资源时,不会对资源加锁,只有在提交事务时会根据version判断,其他线程有没有修改数据。

通常是对数据库加上version版本标志。提交数据时,将提交的数据与之前的版本对比,如果大于则更新。如果等于或小于,则驳回

CAS:无锁实现并发,自旋。将内存中的将要被修改的数据与预期的值进行比较,如果这两个值相等就修改值为新值,否则就不做操作  

公平锁和非公平锁 :ReentrantLock 不做解释

独占锁:每次只有一个线程能访问这个资源。悲观锁也是独占锁

共享锁:ReadWriteLock

 

posted on 2019-09-23 13:58  jay2liuweijie  阅读(165)  评论(0)    收藏  举报