Volatile与CAS的底层原理
引言:VOLATILE是JAVA中一个极其重要关键字,它保证的内存的可见性,但是并不能够保证原子性。而CAS是采用一种无锁的方式,解决VOLATILE所不能带来的原子性等这类问题。接下来,就讲讲VOLATILE与CAS吧!
一、volatile
在讲解 Volatile关键字之前,先上个小demo!
private static volatile long longValue = 0;
private void testVolatile() {
Thread t1 = new Thread(() -> {
long val = 0;
while (val < 10000000L) {
longValue++;
val++;
}
});
t1.start();
Thread t2 = new Thread(() -> {
long val = 0;
while (val < 10000000L) {
longValue++;
val++;
}
});
/* try {
//休眠5S,等待第一个线程跑完
Thread.sleep(5000L);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
t2.start()