Java面试题分享一

什么是乐观锁和悲观锁

乐观锁: 乐观锁顾名思义是将事情往好的地方想,假设共享资源每次访问的时候不会出现问题,线程可以不停的执行,无需加锁也无需等待,只是在提交修改的时候去验证对应的数据是否被其他线程修改了

就比如:Java中的AtomicInteger 、LongAdder就是使用了乐观锁的一种实现方式

悲观锁: 悲观锁总是假设最坏的情况,认为共享资源每次访问的时候都会出现问题,所以每次在获取资源操作的时候都会上锁,这样其他线程想拿到这个资源就会阻塞,直到锁被上一个持有者释放,也就是说,共享资源每次都只给一个线程使用,其他线程阻塞完后再把资源转让给其他线程

就比如:Java中synchronize 和ReentrantLock等独占锁就是悲观锁思想的实现

你可能感兴趣的:(Java面试,java,面试,学习)