面试五、多线程之悲观锁和乐观锁、可重入锁和非可重入锁
1、乐观锁和悲观锁区别
悲观锁:悲观认为数据会被别人修改,在操作时会将数据锁住直到操作完成释放锁,被锁期间其他线程无法操作该数据
乐观锁:乐观认为数据不会被别人修改,只在最终执行更新的时候判断下数据是否有被修改,如有则操作失败否则执行更新操作。如cas、版本号机制
2、乐观锁本身是不会加锁的,只在更新数据是判断下数据是否被别人修改过
3、可重入锁和非可重入锁
可重入锁:一个线程方法外层获取锁,内层仍然可获取该锁,如ReentrantLock
非可重入锁:一个线程方法外层获取锁,内层不可获取该锁
posted on 2021-08-26 00:28 Iversonstear 阅读(123) 评论(0) 编辑 收藏 举报