1.1.1 Java经验
1.1.1 Java经验
vimer-hz
书是越读越薄的
展开
-
三个线程轮流执行顺序打印ABC
public class ThreadThreadp{ public static String TAG = "ThreadThreadp"; private int flag = 0; public synchronized void printa() throws InterruptedException{ while(true){ ...转载 2019-12-22 16:19:40 · 1875 阅读 · 1 评论 -
IntelliJ
[2020.5.19]IntelliJ原创 2023-04-09 18:15:52 · 52 阅读 · 0 评论 -
java中的volatile
1.Java中的volatile:在Java内存模型中,线程共享的资源放在主存中,每个线程同时拥有自己的本地内存。而本地内存中存放了被该线程使用到的主内存变量的拷贝。线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。由此可能导致线程间无法读取变量的最新状态。被volatile修饰的变量在修改时会被强制写到主存中,从而保证该变量对其他线程的可见性。2.C++中的volat...转载 2019-12-25 16:20:12 · 514 阅读 · 1 评论 -
双重检查单例模式,单例对象为何要加上volatile关键字?
代码:class Singleton{ private volatile static Singleton instance = null; private Singletion{} public static Singleton getInstance(){ if(instance==null){ ...转载 2019-12-18 17:35:56 · 307 阅读 · 2 评论 -
volatile如何保证可见性和防止重排序
1 保证可见性:内存可见性是指一个CPU对数据修改,对其他CPU立即可见。(1)”CPU对数据修改“:CPU对数据的修改总是先修改工作内存,然后再同步回主内存,只不过是对被volatile修饰变量的修改,会立刻同步回主内存。(2)”对其他CPU立即可见“:当CPU_A修改完volatile变量,并且立即同步回主存,如果CPU_B的工作内存中也缓存了这个变量,那么B的这个变量将立...转载 2019-12-05 23:46:17 · 265 阅读 · 1 评论