面试五、多线程之悲观锁和乐观锁、可重入锁和非可重入锁

1、乐观锁和悲观锁区别

  悲观锁:悲观认为数据会被别人修改,在操作时会将数据锁住直到操作完成释放锁,被锁期间其他线程无法操作该数据

  乐观锁:乐观认为数据不会被别人修改,只在最终执行更新的时候判断下数据是否有被修改,如有则操作失败否则执行更新操作。如cas、版本号机制

2、乐观锁本身是不会加锁的,只在更新数据是判断下数据是否被别人修改过

3、可重入锁和非可重入锁

  可重入锁:一个线程方法外层获取锁,内层仍然可获取该锁,如ReentrantLock

  非可重入锁:一个线程方法外层获取锁,内层不可获取该锁

posted on 2021-08-26 00:28  Iversonstear  阅读(123)  评论(0编辑  收藏  举报

导航