Java并发编程专栏
文章收录于Java并发编程专栏
Java并发编程:如何正确使用 volatile、synchronized 和 final 关键字
Java代码经编译器编译后,生成的指令顺序可能与源代码的顺序有别,且编译器会将变量存于寄存器而非内存中。CPU处理器采用乱序或并行的方式来执行指令,且在执行过程中保存在CPU处理器本地缓存中的值,对于其他处理器是不可见的。
为了解决线程间的可见性和有序性问题,Java提供了volatile、synchronized 和 final 三个关键字,它们就像三个威力强大的法宝,助你轻松应对并发编程的挑战。
synchronized:线程同步的守护神
synchronized 关键字就像一位守护神,确保代码块在同一时刻只能被一个线程访问。可以理解成它是一把锁,锁住代码块,其他线程想要进入,就必须去争抢锁资源。这样就可以避免多个线程同时访问共享资源,造成数据不一致的问题。
synchronized作用于某段代码块,可以保证可见性和有序性。从JVM底层实现来看,