悲观锁是对访问资源的线程不信任,默认资源会被修改,所以同一时间,同一资源只能够被同一个线程访问,为资源加锁关键字,syconized.
乐观锁对线程信任,默认线程不会改写资源,所以同一时间,同一资源能够被不同线程访问,但是资源被归还时,回主动检验是否被改写,这部分基于CAS(compare and swaped)实现,这个算法是cpu底层使用汇编实现的。
所以在代码过程中,如果数据的写操作比较多,就使用悲观锁,如果对读的需求比较大,就使用乐观锁。
悲观锁是对访问资源的线程不信任,默认资源会被修改,所以同一时间,同一资源只能够被同一个线程访问,为资源加锁关键字,syconized.
乐观锁对线程信任,默认线程不会改写资源,所以同一时间,同一资源能够被不同线程访问,但是资源被归还时,回主动检验是否被改写,这部分基于CAS(compare and swaped)实现,这个算法是cpu底层使用汇编实现的。
所以在代码过程中,如果数据的写操作比较多,就使用悲观锁,如果对读的需求比较大,就使用乐观锁。