
本文共 4024 字,大约阅读时间需要 13 分钟。
CAS������������������
���Java���������������������CAS(...)������������������������������������������������������������������������������������������������������������������������CAS������������������������������������������������������������������
CAS���������������
CAS������������Compare And Swap���������������������������������������������������������������������������������������������������������������������������������������������������
���CAS���������������������������������������������
���������������������CAS���������������������������������������
CAS������������
-
���������
- CAS������������������������������������������������������������������������������������������������������������������������������
- ���������������������������������������
-
���������
- ���������������������������������������������������������������������������������������������������������������ABA������������
- ���������������������������������������������������MMU���������������������������������������������������������������������������
CAS���Java������������
JDK���������CAS������������������������������Atomic
���������Unsafe
���������
Unsafe������������������
Unsafe
���������sun.misc
������������������������������������������������
Atomic������������������������
AtomicIntegerFieldUpdater
���������������������������������������������Unsafe
������������������������������rawl������������������������������������������
Demo1���������������Demo2������
Demo1������������
public class Demo1 { private int i = 0; public void incr() { i++; } public static void main(String[] args) throws Exception { Demo1 demo1 = new Demo1(); for (int j = 0; j < 2; j++) { new Thread(new Runnable() { @Override public void run() { for (int k = 0; k < 10000; k++) { demo1.incr(); } } }).start(); Thread.sleep(1000); } System.out.println(demo1.i); // ������������ }}
������������
������������������������������������������������20000���������������������������������20000���������������i++
���������������������������������������������������������������������������������
������������Demo2
public class Demo2 { AtomicInteger i = new AtomicInteger(0); private void incr() { i.incrementAndGet(); } public static void main(String[] args) throws Exception { Demo2 demo2 = new Demo2(); for (int j = 0; j < 2; j++) { new Thread(new Runnable() { @Override public void run() { for (int k = 0; k < 10000; k++) { demo2.incr(); } } }).start(); } Thread.sleep(1000); System.out.println(demo2.i); }}
������������
���Demo2
������������������AtomicInteger
���������������������������incr()
���������������incrementAndGet
���������������������������������������������������������������
CAS���������������������
ABAB������
���������������������������������������������������������������������������lef��������������������������������������������� CAS���������������������������������������������������������������������������
CAS������������������
���������������������������������������������������������������������������������������������������������������������CAS������������������������
762
发表评论
最新留言
关于作者
