![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
小泽泽泽ya
为期所取
展开
-
JAVA 多线程 CAS与AtomicInteger (猴子取苹果)
CAS(乐观锁)CAS指令有三个操作数,分别是内存位置(在Java中可以简单的理解为变量的内存地址,用V表示),旧的预期值(用A表示)和准备设置的新值(用B表示)。CAS指令在执行的时候,当且仅当V符合A时,处理器才会用B更新V的值,否则它就不会执行更新。自旋操作(即不可重入)compareAndSet,compareAndExchange,compareAndSwap 通过比较判断前后的值是否相等来进行更新操作。(1)ABA问题?1.在多线程的环境中,线程a从共享的地址X中读取到了对象A。2.在原创 2022-02-15 17:43:09 · 374 阅读 · 0 评论 -
Java 多线程 ReetrantLock 猴子取苹果(交替 无法取则退出)
猴子取苹果问题共计9个苹果,有2只猴子,一个猴子每次拿2个苹果,一个猴子每次拿3个苹果,如果剩余的苹果不够猴子每次拿的数量,则2只猴子停止拿苹果,两只猴子依次拿取苹果。请用java多线程模拟上面的描述注意需要两个thread都打断循环线程才能结束退出。package com.zkk;import java.util.Random;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Reent原创 2022-02-15 16:39:35 · 667 阅读 · 0 评论