测试volatile 的线程的可见性 1 public class VolatileTest { 2 3 private static boolean flag = true; //不用volatile修饰 4 5 public static void main(String[] args) thr ...
分类:
其他好文 时间:
2020-05-05 20:08:32
阅读次数:
66
目录: 1、volatile 关键字与内存可见性 什么是内存可见性:当多个线程操作共享数据时,彼此不可见。 demo:测试线程数据没有及时与主内存数据进行同步 package com.oy; public class TestVolatile { public static void main(St ...
分类:
编程语言 时间:
2020-05-05 20:07:39
阅读次数:
67
volatile 具有可见性,顺序性,但是不具有原子性。 以一个列子来说明: 10个线程对 num++ 操作,num++ 是 num=num+1; 不是一个原子操作 package com.example.demo.thread; public class VolatileAtomicTest { ...
分类:
其他好文 时间:
2020-05-05 20:06:36
阅读次数:
67
一,.volatile关键字的两层语义: (一),一旦一个共享变量被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 2)禁止进行指令重排序。 (二),内存屏障有两个能力: 1. 阻止屏 ...
分类:
其他好文 时间:
2020-05-05 20:03:37
阅读次数:
54
在 的面试当中,面试官最爱问的就是 关键字相关的内容。经过多次面试之后,你是否思考过,为什么他们那么爱问 关键字相关的问题?而对于你,如果作为面试官,是否也会考虑采用 关键字作为切入点呢? 为什么爱问volatile关键字 爱问 关键字的面试官,大多数情况都是有一定功底的,因为 作为切入点,往底层走 ...
分类:
其他好文 时间:
2020-05-04 19:02:35
阅读次数:
58
Redis 的淘汰策略: 1、noeviction: 不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。 大多数写命令都会导致占用更多的内存(有极少数会例外, 如 DEL )。 2、allkeys-lru: 所有key通用; 优先删除最近最少使用(less recently ...
分类:
其他好文 时间:
2020-05-04 17:16:52
阅读次数:
54
ConCurrentHashMap 1.8 相比 1.7的话,主要改变为: 去除 Segment + HashEntry + Unsafe 的实现, 改为 Synchronized + CAS + Node + Unsafe 的实现 其实 Node 和 HashEntry 的内容一样,但是HashE ...
分类:
其他好文 时间:
2020-05-04 13:26:22
阅读次数:
62
volatile是什么 ? 是java虚拟机提供的轻量级同步机制,它包含三种特性: 保证可见性: 只要主内存中变量做出修改,其余线程马上会感知到变量的修改。 不保证原子性: 禁止指令重排 JMM概念 ? JMM本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个 ...
分类:
其他好文 时间:
2020-05-02 18:51:25
阅读次数:
46
JUC包 AtomicInteger底层实现原理是什么?-->一个Unsafe操作获取内存地址,一个Volatile保证value的可见性,CAS进行重试。 原子更新方法:getAndIncrement-->Unsafe会利用value字段的内存地址偏移,直接完成操作 ? Atomic 包提供了最常 ...
分类:
编程语言 时间:
2020-05-01 22:22:44
阅读次数:
102