并发编程
青小梅
技术只有分享才能进步!
展开
-
ThreadLocal解析
本文是源码解析是基于JDK 131. 什么是ThreadLocal? ThreadLocal顾名思义即是线程本地变量。ThreadLocal变量与普通变量不同,它使得每个访问它的线程都保存着属于自己独立初始化的变量副本,每个线程对ThreadLocal变量的读写是隔离的,互不影响。在多线程场景下,ThreadLocal通过线程隔离达到被多个线程同时访问但又线程安全的目的。2. Thread...原创 2020-01-05 17:24:23 · 582 阅读 · 4 评论 -
Java线程知识及线程创建
1. Java线程 讲到线程,首先需要了解进程,再来了解什么是线程。在博客线程安全中提到线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度(线程是CPU调度的基本单位)。 Java语言提供了在不同硬件和操作系统平台下对线程操作的统一处理,每一个已经执行start()且还未结束的java...原创 2019-07-23 01:23:36 · 132 阅读 · 0 评论 -
Java线程调度、Thread类API、生命周期、生产者消费者模式
Java线程实现:线程的实现和Java线程的实现(一笔带过)Java线程调度:抢占式调度和协同式调度Thread类API:按类别分一下。大致讲一下,可对应中文API守护线程应该讲一下wait()和sleep()的区别 join方法 synchronized中断也讲一下线程状态转换:基于Thread类中的State枚举类:英文翻译可以加上https://blog.csdn.net/e...原创 2019-07-23 01:24:30 · 332 阅读 · 0 评论 -
volatile变量及内存屏障
1.volatile变量的特殊规则2.volatile的底层实现原理3.内存屏障4.volatile的使用场景5.DCL原创 2019-07-03 00:22:33 · 740 阅读 · 4 评论 -
重排序
1. 什么是重排序一般说起重排序,应当有个概念,那就是被排序的对象是什么?答案是指令。而重排序本质上是一种技术,是编译器或者运行时环境为了提高程序执行的性能而对指令进行重新排序的手段。根据排序指令的主体来看来看,重排序分为两类:编译器优化重排序与处理器重排序。其中处理器重排序可进一步细分为指令集并行级重排序和内存系统重排序。编译器优化重排序:不改变单线程程序语义前提下,重新安排指令执行顺序...原创 2019-06-14 00:39:49 · 231 阅读 · 0 评论 -
happens-before原则
https://www.cnblogs.com/java1024/p/8589537.html原创 2019-07-03 00:22:12 · 216 阅读 · 0 评论 -
原子性、可见性、有序性
时间片轮转与原子性多级缓存与可见性指令重排序与有序性原创 2019-06-17 01:08:25 · 354 阅读 · 0 评论 -
Java内存模型(JMM)
1. Java内存模型的实现1.1 平台(计算机)内存模型 计算机模型是一个与硬件相关的概念,它的起源较早。当计算机刚出现的时候,内存的速度还跟的上处理器的速度,处理器可以直接访问主内存。随着处理器的发展,处理器的执行速度越来越快,而内存的访问速度已经远远跟不上处理器的执行速度(内存访问速度不是不可以提升,只是提升的成本太高,是提升处理器执行速度的好几倍),于是在每个处理器的内部增加了高速缓...原创 2019-06-03 00:45:06 · 179 阅读 · 0 评论 -
线程安全
1.线程安全 一般来说,同时提到进程和线程时,会以这样的定义来对比进程和线程:进程是资源分配的基本单位,线程是CPU调度的基本单位。 上述内容是一个总的结论,但是为什么会得到这样一个结论?我们得从进程是如何出现的,线程是如何出现的来解释。 首先我们需要理解程序的执行本质上是CPU指令的执行,我们的程序是由一堆静态的代码文件构成的,这些静态文件(如Java文件)经过一系列编译器、解释器的...原创 2019-05-21 00:28:04 · 354 阅读 · 0 评论