![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发编程
maove
不积跬步,无以至千里;不积小流,无以成江海。
展开
-
Java内存模型——happens-before原则
在Java内存模型中,为了更好的执行效率,处理器和编译器会对指令进行重排序。就像下面的代码: int a=0,b=0; public void test(){ for (;;){ int x=a; b=1; a++; System.out.println(x); ...原创 2019-04-30 16:36:58 · 524 阅读 · 0 评论 -
ThreadLocal
ThreadLoca,线程本地变量。它为每一个使用该变量的线程都提供了独立的副本,通过它可以做到线程间的数据隔离,每个线程都可以访问各自内部的副本变量。它本身能够被多个线程共享使用,ThreadLocal类提供了get(),set()方法,在不同的线程中调用它的set方法进行设值,值是保存在当前线程自己的"map"中的。每个线程都只能获取到自己的"map",因此只有自己才可以通过get来获取设...原创 2019-05-01 11:18:34 · 690 阅读 · 0 评论 -
乐观的并发策略——CAS非阻塞操作
什么是CAS?CAS(Compare-and-Swap,比较并交换)操作是一种乐观的并发策略。CAS 操作需要三个操作数 , 内存位置(V)、预期值(A)和新值(B)。执行CAS操作时,如果内存位置的值与预期值相等,处理器就会用新值(B)跟新V的值。否则,处理器不做更新。无论是否更新了V的值,都会将V的旧值返回。上面的比较并交换的一系列过程,虽然从语义上来看是多次操作,但事实上,它的操作...原创 2019-05-10 19:23:57 · 387 阅读 · 0 评论