![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
JUC就是java.util .concurrent工具包的简称
MartinXtinmar
这个作者很懒,什么都没留下…
展开
-
原子变量
i++原子性问题: int temp = i; i = temp; i = i + 1; 中间可能会被其他线程抢走CPU时间片,造成重复赋值,要解决该问题,可以采取加上synchronized锁,但会影响效率。 i++会发生多线程安全问题,而原子变量采用CAS算法,可以避免该问题发生,提高效率。 原子变量位于java.util.concurrent.atomic包下,采用原子变量可以避免原子性...原创 2020-02-19 15:19:12 · 146 阅读 · 0 评论 -
CAS算法
CAS(compare and swap)是底层硬件对并发操作的一种支持。 包含了三个操作数: 从内存读取出来的值V 预期值A(第一步第一次读取出来的值) 新值B(修改后的值) 当且仅当V == A,才会执行 V = B ,把新值赋给内存否则不会进行任何操作。 ...原创 2020-02-19 14:58:29 · 95 阅读 · 0 评论 -
创建线程的四种方式
1.继承Thread类(缺点:无法再继承其他的类) 通过继承Thread类,重写run方法实现。主方法先把MyThread创建出来,然后“.start()”把线程放到预备队列。 public class CreateThread { public static void main(String[] args) { Thread myThread = new MyThread...原创 2020-02-19 14:45:43 · 86 阅读 · 0 评论 -
volatile 内存可见性
内存可见性 内存可见性是指一个线程修改所使用对象时,其他线程也能看到对象的状态的变化。 由于缓存的存在,线程无法及时看到对象的修改 由于线程创建出来,其本身缓存的原因,所以其他线程修改对象状态的时候,本线程无法及时及时刷新本线程的缓存,可能无法看到对象状态的修改。 使用volatile关键字 使用volatile,可以让其他线程及时看到对象的状态发生改变,相当于线程废弃自己的缓存,直接操作内存 ...原创 2020-02-19 13:57:21 · 79 阅读 · 0 评论