为什么80%的码农都做不了架构师?>>>
volatile关键字比较少使用,因为: 1:在早前的Java版本中,这个关键字在不同的操作系统中有不同的表现,导致了可移植性比较差。 2:比较难设计,误用较多
每个线程都运行在栈内存中,每个线程都有自己的工作内存(比如寄存器Register,高速缓存器Cache),线程的计算是通过工作内存进行交互的。 如图:
比如在一个变量前加入volatile关键字,可以保证每个线程对本地变量的访问和修改都是通过直接与主内存交互完成的,而不是与本线程的工作内存交互的,这样就能保证每个线程都能获得最新鲜的变量值。