Java教程

java锁总结

本文主要是介绍java锁总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

参考:https://www.cnblogs.com/jyroy/p/11365935.html

乐观锁和悲观锁
悲观锁,操作共享数据先加锁。Java 语言中synchronized和ReentrantLock等就是典型的悲观锁,还有一些使用了synchronized关键字的容器类如HashTable等也是悲观锁的应用。
乐观锁,认为没有同时操作共享数据的可能,数据库层面用版本号实现。Java语言中java.util.concurrent.atomic包下的原子类就是使用CAS乐观锁实现的(运用操作系统CAS原子性实现)。

两种锁的使用场景
乐观锁适用于写比较少(冲突比较小)的场景,因为不用上锁、释放锁,省去了锁的开销,从而提升了吞吐量。
如果是写多读少的场景,即冲突比较严重,线程间竞争激励,使用乐观锁就是导致线程不断进行重试,这样可能还降低了性能,这种场景下使用悲观锁就比较合适。

这篇关于java锁总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!