
正文
cas乐观锁java代码,java 乐观锁 悲观锁
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
JAVA锁有哪些种类,以及区别
1、独享锁/共享锁 独享锁是指该锁一次只能被一个线程所持有。共享锁是指该锁可被多个线程所持有。对于Java ReentrantLock而言,其是独享锁。但是对于Lock的另一个实现类ReadWriteLock,其读锁是共享锁,其写锁是独享锁。
2、互斥锁:线程会从sleep(加锁)——running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。自旋锁:线程一直是running(加锁——解锁),死循环检测锁的标志位,机制不复杂。
3、Java中Lock,tryLock,lockInterruptibly的区别如下: lock()方法 使用lock()获取锁,若获取成功,标记下是该线程获取到了锁(用于锁重入),然后返回。
4、ReentrantLock 锁有好几种,除了常用的lock ,tryLock ,其中有个lockInterruptibly 。先把API粘贴上来 lockpublic void lock()获取锁。如果该锁没有被另一个线程保持,则获取该锁并立即返回,将锁的保持计数设置为 1。
相关问答
Q1: java中snchronised和锁的区别
synchronized和lock的用法区别 synchronized:在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。 lock:需要显示指定起始位置和终止位置。
Q2: cas属于乐观锁
乐观锁: 乐观锁又称为“无锁”。乐观锁总是假设对共享资源的访问没有冲突,线程可以不停地执行,无需加锁也无需等待。而一旦多个线程发生冲突,乐观锁通常是使用一种称为 CAS 的技术来保证线程执行的安全性。
这就是悲观锁,如synchronized,它是重量级锁,就像在门口挂上“禁止进入”的牌子,确保数据安全。反之,乐观锁如CAS,持有者认为自己操作期间不会被干扰,仅在执行时才加锁,是轻量级的,代表了CAS乐观的预设。
CAS是从乐观的角度出发:总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。CAS这种机制我们也可以将其称之为乐观锁。
保证了数据按顺序提交。memcache需要使用cas保证数据一致性。
CAS,Compare and Swap即比较并替换。它是乐观锁思想的一种实现方式。
cas乐观锁java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 乐观锁 悲观锁、cas乐观锁java代码的信息别忘了在本站进行查找喔。







