请选择 进入手机版 | 继续访问电脑版

java中的各种锁详细介绍

[复制链接]
发表于 2019-8-20 09:05:51 |显示全部楼层
什么是锁?


       在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制。锁旨在强制实施互斥排他、并发控制策略。

        其实说白了,锁和我们平时生活中的锁是一样的,就是为了控制访问的。加锁就是为了不让坏人进入我们的房间偷取财物。

而程序中的锁就是为了别的线程不要和我们的线程进行争夺数据资源、







1. 乐观锁 VS 悲观锁

乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。


对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。
(悲观锁就是在自己吃东西的时候害怕别人也来吃 所以上锁)

乐观锁认为自己使用数据的时候不会有别的线程来修改数据,因此在使用数据的时候不会加锁。


据从上面的概念描述我们可以发现:

  • 悲观锁适合写操作多的场景,先加锁可以保证写操作时数据正确。

  • 乐观锁适合读操作多的场景,不加锁的特点能够使其读操作的性能大幅提升。




您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|沙漏笔记

GMT+8, 2020-1-19 21:32 , Processed in 0.128801 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Copyright © 2015-2018 xuejava网 / 鲁ICP备17054568号-1
回顶部