![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 82
sscout
这个作者很懒,什么都没留下…
展开
-
volatile关键字解析
在聊volatile的原理前,有必要先了解下内存屏障是什么。 内存屏障 它是一个CPU指令。通俗来讲,它能确保一些特定操作执行的顺序,并且可以影响一些数据的可见性(可能是某些指令执行后的结果)。 编译器和CPU可以在保证输出结果一样的情况下对指令重排序,使性能得到优化。插入一个内存屏障,相当于告诉CPU和编译器先于这个命令的必须先执行,后于这个命令的必须后执行。 内存屏障另一个作用是强制更新一次...转载 2019-11-12 11:31:04 · 93 阅读 · 0 评论 -
synchronized关键字解析
synchronized的用法相信大家的不会陌生,那么来聊聊底层的一些东西。 synchronized同步方法 通过反编译后,可以发现JVM通过在方法访问标识符(flags)中加入ACC_SYNCHRONIZED来实现同步功能。 public synchronized static void test1(){} public static synchronized void test1(); ...原创 2019-11-11 18:23:43 · 133 阅读 · 0 评论 -
实现多线程的正确姿势
实现多线程的方法 实现多线程的方法只有2种,这个答案也是oracle在Java官方文档中写明的,见下图。 There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread. The other way to create a thread i...原创 2019-09-08 21:42:07 · 139 阅读 · 0 评论 -
简单分析Java线程中断
停止线程 原理:使用interrupt来通知,而不是强制。 在用户主动取消,或需要服务快速关闭以及运行超时或出错时,需要主动停止线程。Java语言没有一种机制来安全正确的停止线程,但是提供了interrupt来通知另一个线程来停止当前的工作。 在Java中,最好的停止线程的方式是使用中断interrupt,但是这仅仅是会通知到被终止的线程“你该停止运行了”,被终止的线程自身拥有决定权(决定是...原创 2019-09-10 21:36:44 · 234 阅读 · 0 评论 -
JMM内存模型
概述 JMM,全名为Java Memory Model,即Java内存模型。它是一组规范,需要各个JVM的实现来遵守JMM规范,它屏蔽了各种硬件和操作系统的内存访问差异,以实现Java程序在各个平台下都能达到一致的内存访问效果。不像C/C++那样直接访问物理硬件和操作系统的内存模型,它的主要目的是解决由于多线程通过共享内存进行通信时,存在的本地内存数据不一致、编译器会对代码重排序、处理器会对代码...原创 2019-09-26 23:16:39 · 5319 阅读 · 2 评论 -
ThreadLocal的实现原理
概述 ThreadLocal是一个本地线程副本变量工具类,如果你创建了一个ThreadLocal变量,那么访问这个变量的线程都会有这个变量的本地副本。它主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量不互相干扰,在高并发场景下,可以实现无状态的调用,适合于各个线程依赖不同的变量值的操作场景。 类图 Thread类中有内部类ThreadLocalMap,它类型是Has...原创 2019-10-10 20:28:56 · 146 阅读 · 0 评论