ConcurrentHashMap是一个经常被使用的数据结构,它在线程安全的基础上提供了更好的写并发能力。ConcurrentHashMap跟Map有很大的不同,内部大量使用volatile和CAS等减少锁竞争,当然代码也比HashMap难理解的多,本章基于JDK1.8对ConcurrentHash... ...
分类:
其他好文 时间:
2020-04-19 00:43:45
阅读次数:
64
JUC(java.util.concurrent) 进程和线程 进程:后台运行的程序(我们打开的一个软件,就是进程) 线程:轻量级的进程,并且一个进程包含多个线程(同在一个软件内,同时运行窗口,就是线程) 并发和并行 并发:同时访问某个东西,就是并发 并行:一起做某些事情,就是并行 JUC下的三个包 ...
分类:
其他好文 时间:
2020-04-18 13:54:58
阅读次数:
60
普通单例模式 饿汉式:利用static关键字,在类初始化的时候就会调用静态方法 public class Singleton { private static final Singleton singleton=new Singleton(); private Singleton(){ } publ ...
分类:
其他好文 时间:
2020-04-16 00:50:06
阅读次数:
58
前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。 本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,在此之前,有必要讲解一下CPU缓存的相关知识, ...
分类:
其他好文 时间:
2020-04-14 00:42:53
阅读次数:
74
首先,volatile:是一个类型修饰符 作用: 一是实现可见性,即一个线程修改了某个变量的值,这个新值对其他线程来说是立即可见的。(实现可见性) //线程1 boolean stop = false; while(!stop){ doSomething(); } //线程2 stop每个线程在运行 ...
分类:
其他好文 时间:
2020-04-12 22:34:24
阅读次数:
68
volatile是Java虚拟机提供的轻量级别的同步机制 保证可见性 不保证原子性 禁止指令重排 JMM 可见性 原子性 有序性 计算机在执行程序是,为了提高性能,编译器和处理器常常会做指令重排,一般分为以下3中 单线程环境中确保程序最终执行结果和代码顺序执行的结果 一致性 处理器在进行重新排序是必 ...
分类:
编程语言 时间:
2020-04-12 12:44:01
阅读次数:
59
面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 redi ...
分类:
其他好文 时间:
2020-04-10 22:26:17
阅读次数:
57
浅谈volatile 这篇文章我们主要了解一下几个问题 volatile的特性与指令重排序 DCL单例 volatile的实现,内存屏障 volatile的特性和指令重排序 首先volatile拥有可见性,这里就不过多解释了 然后另外一点是它能解决指令重排序。 那么问题来了什么是指令冲排序? 通俗的 ...
分类:
其他好文 时间:
2020-04-09 12:59:59
阅读次数:
87
java线程的内存模型 java的线程内存模型中定义了每个线程都有一份自己的共享变量副本(本地内存),里面存放自己私有的数据,其他线程不能直接访问,而一些共享变量则存在主内存中,供所有线程访问。 上图中,如果线程A和线程B要进行通信,就要经过主内存,比如线程B要获取线程A修改后的共享变量的值,要经过 ...
分类:
其他好文 时间:
2020-04-07 22:50:27
阅读次数:
124
了解disruptor,先来了解下以下知识 我们先来了解下CPU缓存:http://ifeve.com/from-javaeye-cpu-cache/,例如CPU分级缓存结构、缓存行概念等,知道的同学可以略过。 伪共享问题 http://ifeve.com/falsesharing 在Java程序中 ...
分类:
其他好文 时间:
2020-04-07 18:28:32
阅读次数:
60