- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 Java引用解析
http://lovestblog.cn/blog/2015/07/09/final-reference/https://www.jianshu.com/p/79d4a0516f11https://www.jianshu.com/p/30157b64a51ahttps://www.jianshu.com/p/9bb3df3556e2https://blog.csdn.net/gdutxia...
2020-01-30 21:16:36 335
原创 ThreadLocal解析
本文是源码解析是基于JDK 131. 什么是ThreadLocal? ThreadLocal顾名思义即是线程本地变量。ThreadLocal变量与普通变量不同,它使得每个访问它的线程都保存着属于自己独立初始化的变量副本,每个线程对ThreadLocal变量的读写是隔离的,互不影响。在多线程场景下,ThreadLocal通过线程隔离达到被多个线程同时访问但又线程安全的目的。2. Thread...
2020-01-05 17:24:23 580 4
原创 CentOS6/7启动流程简述
CentOS6启动流程简述开机启动流程:1.硬件启动流程设备上电后,BIOS进行初始化,开始POST自检,自检通过后,BIOS依照设置的启动顺序启动,如果第一启动项是硬盘,则BIOS进行引导并加载MBR中BootLoader。1.1 打开电源1.2 BIOS初始化1.2.1 POST自检:检测硬件设备是否有影响正常开机的故障,如果不影响正常开机,则自检通过1.2.2 确定启动设备:根...
2019-11-13 00:44:51 236
原创 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 331
原创 Java线程知识及线程创建
1. Java线程 讲到线程,首先需要了解进程,再来了解什么是线程。在博客线程安全中提到线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度(线程是CPU调度的基本单位)。 Java语言提供了在不同硬件和操作系统平台下对线程操作的统一处理,每一个已经执行start()且还未结束的java...
2019-07-23 01:23:36 132
原创 volatile变量及内存屏障
1.volatile变量的特殊规则2.volatile的底层实现原理3.内存屏障4.volatile的使用场景5.DCL
2019-07-03 00:22:33 739 4
原创 Java修饰符部分规则
publicprotectedprivatestaticfinaltransientvolatile修饰变量:final与volatile不能共用:final是不可变的,final修饰变量使得变量在赋值后就不可改变,volatile是易变的,使得变量被修改后其他线程立即可见。访问修饰符public protected private天然不可同时被使用。publicprotec...
2019-07-03 00:21:00 607
原创 重排序
1. 什么是重排序一般说起重排序,应当有个概念,那就是被排序的对象是什么?答案是指令。而重排序本质上是一种技术,是编译器或者运行时环境为了提高程序执行的性能而对指令进行重新排序的手段。根据排序指令的主体来看来看,重排序分为两类:编译器优化重排序与处理器重排序。其中处理器重排序可进一步细分为指令集并行级重排序和内存系统重排序。编译器优化重排序:不改变单线程程序语义前提下,重新安排指令执行顺序...
2019-06-14 00:39:49 231
原创 Java内存模型(JMM)
1. Java内存模型的实现1.1 平台(计算机)内存模型 计算机模型是一个与硬件相关的概念,它的起源较早。当计算机刚出现的时候,内存的速度还跟的上处理器的速度,处理器可以直接访问主内存。随着处理器的发展,处理器的执行速度越来越快,而内存的访问速度已经远远跟不上处理器的执行速度(内存访问速度不是不可以提升,只是提升的成本太高,是提升处理器执行速度的好几倍),于是在每个处理器的内部增加了高速缓...
2019-06-03 00:45:06 178
原创 Java中的i++与++i
1.j=i++和j=++i的底层操作 前提条件:假定i,j只是一个局部变量,i为第一个局部变量,j为第二个局部变量,i=10,j=2,单纯看j=i++和j=++i在底层到底做了哪些操作。 首先看一下几个字节码指令(实际运行可能为其他指令,具体可通过javap查看字节码文件): iload_0:将第一个int型本地变量推送至栈顶 iStore_0:将栈顶int型数值存入到第一...
2019-05-21 00:55:46 1255
原创 线程安全
1.线程安全 一般来说,同时提到进程和线程时,会以这样的定义来对比进程和线程:进程是资源分配的基本单位,线程是CPU调度的基本单位。 上述内容是一个总的结论,但是为什么会得到这样一个结论?我们得从进程是如何出现的,线程是如何出现的来解释。 首先我们需要理解程序的执行本质上是CPU指令的执行,我们的程序是由一堆静态的代码文件构成的,这些静态文件(如Java文件)经过一系列编译器、解释器的...
2019-05-21 00:28:04 353
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人