public abstract class EnableCleanSingle<T>{ private volatile T object; private int updateCount; public T getObject() { if(object == null) { synchroniz... ...
分类:
其他好文 时间:
2019-08-24 13:38:00
阅读次数:
98
使用double check保证实例只初始化一次,使用volatile保证不会因为指令重排造成错误 ...
分类:
编程语言 时间:
2019-08-22 13:21:09
阅读次数:
90
调试中打印管脚可以用SWO管脚代替PB3脚 keil配置如下 1.在新建工程里面加入 #include <stdio.h> #define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))#define ITM_Port16(n ...
分类:
其他好文 时间:
2019-08-20 23:59:27
阅读次数:
257
public class CountDownLatchTest1 implements Runnable{ final AtomicInteger number = new AtomicInteger(); volatile boolean bol = false; @Override public... ...
分类:
编程语言 时间:
2019-08-20 18:27:16
阅读次数:
108
当多个线程访问共享数据的时候,多个线程之间是彼此不可见的,此时就会出现线程安全问题,但是我们知道使用synchronized关键字进行加锁实现同步是可以解决问题的,但是这种方法的效率比较低。 volatile的作用就是多个线程访问共享数据的时候,在内存中的共享数据对多个线程彼此是可见的。相较于syn ...
分类:
其他好文 时间:
2019-08-19 13:22:47
阅读次数:
151
java并发之CopyOnWirteArrayList CopyOnWirteArrayList的实现 它用了ReentrantLock保证了add,set,remove操作的安全,同时使用volatile定义内部数组保证了可见性, 之所以叫CopyOnWrite就是因为很多方法都是通过Array. ...
分类:
编程语言 时间:
2019-08-18 22:06:10
阅读次数:
101
1.java中产生并发问题的主要原因有哪三个? 原子性、可见性和有序性 2.什么是java内存模型? java虚拟机规范中用来屏蔽掉各种硬件和操作系统内存访问差异,java内存模型的主要目标是定义程序中各个变量的访问规则。 3.java中除了volatile关键字可以实现内存可见性外还有哪些关键字可 ...
分类:
编程语言 时间:
2019-08-18 20:04:50
阅读次数:
123
volatile线程对变量进行修改后,立刻写回到主内存线程对变量读取的时候,从主内存中读取,而不是缓冲,避免了指令重排无法破除循环publicclassmy{privatevolatilestaticintnum=0;publicstaticvoidmain(String[]args)throwsInterruptedException{newThread(()->{while(num==0
分类:
编程语言 时间:
2019-08-18 17:44:30
阅读次数:
115
1.volatile有什么含义?有什么用法? 官方定义是: 一个变量也许会被后台程序改变。 关键字volatile与const绝对独立。它指示一个变量也许会被某种方式修改,这种方式按照正常程序流程分析是无法预知的(例如,一个变量也许会被一个中断服务程序所修改)。这个关键字使用以下语法定义: vola ...
分类:
编程语言 时间:
2019-08-17 14:18:15
阅读次数:
77
十六、Java内存模型 特点:原子性、可见性、有序性。 原子性:read、load、use、store、write、synchronized关键字保证原子性 可见性:synchronized、volatile、final保证可见性 有序性:synchronized保证有序性 十七、设计模式 ①分类: ...
分类:
编程语言 时间:
2019-08-16 00:45:58
阅读次数:
102