在Java中,如果启动多个线程对同一个对象或者变量时候,在没有安全保护前提下有可能会抛出并异常 java.util.ConcurrentModificationException 当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常(并发异常) 解决方法: 在对象/变量前加上volatile。 ...
分类:
编程语言 时间:
2018-07-03 14:41:07
阅读次数:
169
JVM方面 JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 Hot ...
分类:
编程语言 时间:
2018-07-02 15:35:38
阅读次数:
206
Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字。 volatile,从字面上说是易变的、不稳定的,事实上,也确实如此,这个关键字的作用就是告诉编译器,只要是被此关键字修饰的变量都是易变的、不稳定的。那为什么是易变的呢?因为 ...
分类:
编程语言 时间:
2018-07-01 23:02:55
阅读次数:
204
CAS,在Java并发应用中通常指CompareAndSwap,即比较并交换。 CAS是一个原子操作,它比较一个内存位置的值并且只有相等时修改这个内存位置的值为新的值,保证了新的值总是基于最新的信息计算的,如果有其他线程在这期间修改了这个值则CAS失败。 synchronized属于重量级锁,很多时 ...
分类:
其他好文 时间:
2018-06-30 18:48:27
阅读次数:
167
a/init/main.c +++ b/init/main.c @@ 504,6 +504,8 @@ static void __init mm_init(void) mm_init_dur = read_fast_counter() mm_init_dur; } +volatile int don ...
分类:
其他好文 时间:
2018-06-28 16:50:00
阅读次数:
148
单例模式是我们比较常用的设计模式,玩好单例模式也会涉及到很多java基础知识。 单例作为全局性实例,在多线程情况下全局共享的变量会变得非常危险。 双重检测: 双重检测是比较常用的一种实现方式: 如果不用volatile修饰,多线程执行到 singleton == null 时,多个实例会被创建出来, ...
分类:
其他好文 时间:
2018-06-28 10:57:17
阅读次数:
157
简述synchronized和volatile的区别 1、synchronized可以使用在变量、方法、类级别,而volatile只能使用在变量级别 2、synchronized可以保证变量修改的可见性和原子性,而volatile只能保证变量修改的可见性 3、synchronized有可能造成线程的 ...
分类:
其他好文 时间:
2018-06-26 01:11:32
阅读次数:
186
题目:程序的运行结果?a. 死循环 b.停止 输出结果:若干个(数量不定)"="后,程序exit停止 关键为b == !b,这一步程序为4步: 1. 获取b;2.获取第二个b;3.对第二个b进行取反;4. 计算第一个b和取反后的b 在第一步和第二步之间,b的值有可能会改变,结果就有可能成为 true ...
分类:
编程语言 时间:
2018-06-25 19:04:20
阅读次数:
141
https://blog.csdn.net/u012436149/article/details/66971822 简单总结其用途 (1)requires_grad=Fasle时不需要更新梯度, 适用于冻结某些层的梯度; (2)volatile=True相当于requires_grad=False, ...
分类:
其他好文 时间:
2018-06-25 15:03:16
阅读次数:
141
const只读变量: const修饰的变量是只读的,本质还是一个变量 const修饰的局部变量在栈上分配空间 const修饰的全局变量在全局函数区分配资源空间 const只在编译器有用,在运行期无用 注意:const修饰的变量不是真的常量,他只是告诉编译器该变量不能出现在赋值符号的左边 const全 ...
分类:
编程语言 时间:
2018-06-24 23:57:34
阅读次数:
305