Thread
comil4444
这个作者很懒,什么都没留下…
展开
-
JAVA多线程的初级认识1--线程的基本认识
为什么要有多线程? 从最开始的真空管穿孔打卡,到后来的晶体管批处理系统,再到后来的集成电路多核并行执行。从硬件资源的级别程度逐渐提高,但是软件如果对硬件资源利用率低,也是一种资源的损耗,所以随之而来的进程和线程应运而生。为什么有了进程还需要出现线程?先说一下进程的弊端。相比进程,对于CPU时间片切换,线程是轻量级的。 仅有单线程无线程的话,如果单个IO阻塞了整个进程,那么程序...原创 2019-06-01 09:40:30 · 101 阅读 · 0 评论 -
JAVA多线程的初级认识2-线程安全性
线程安全性是一个麻烦的难题~从而造成了多线程代码的难写的重要原因。那就从物理和JMM两个层面去了解安全性是如何出现问题的。 物理层面 由于计算机设备的计算能力不均,大致可分为,IO设备 < 内存 < CPU,由于计算能力相差太大。导致很多的地方需要用到缓存,大致的缓存模型如下:一级缓存L1:包含数据缓存和指令缓存二级缓存L2: 各个CPU私有三级缓存L3:...原创 2019-06-01 15:55:41 · 135 阅读 · 0 评论 -
JAVA多线程的初级认识3-happens-before原则
针对java的happens-before有很多原则,个人总结起来如下,做个笔记别忘记:程序有序原则如何理解呢?个人理解就是无论程序如何优化,包括指令集重排序,hotspot的c1,c2运行时候优化等,都不会更改结果。即无论如何优化,结果不会变。volatile原则对volatile修饰的变量写的操作一定发生在读的操作之前。即我们读取出来的volatile变量一定是最新的。个人感觉...原创 2019-06-08 11:41:07 · 93 阅读 · 0 评论 -
JAVA多线程的初级认识4-锁的基本认识
Java中多线程的技术必然要了解的必然是锁~锁保证多线程的数据安全。所以不多说进入主题。最轻量级的锁Volatile当然这是因为它只能修饰变量,而且相对于synchronized关键字轻量了很多~对于变量增加了volatile的修饰,表示该数据的写和读都直接同步到主内存,所以保证该变量的任何修改对于其他线程是可见的。我们可以查看关于修饰volatile变量的编译文件和指令,可以看出~里面会...原创 2019-06-08 13:47:30 · 119 阅读 · 0 评论 -
JAVA多线程的初级认识5-ReentrantLock的初级认识
首先声明,文章中的图为借用~通过图来梳理自己的思路。锁除了Synchronized之外,DougLea大神还提供了Lock来帮忙进行资源的锁定。Lock接口作为JUC的核心组件,它比synchronized更加灵活,适用更多场景。下面就简单介绍下Lock的基本实现。基本实现锁ReentrantLock可重入锁当同步代码段再次进入用相同资源锁定的同步代码段时候,重入次数+1;Reentr...原创 2019-06-08 14:58:39 · 161 阅读 · 0 评论 -
JAVA多线程的初级认识6-Condtion以及一些同步工具的使用
Conditon介绍condition原理分析awaitsignal/signalAllCountDownLatchCycleBarrierSemaphore原创 2019-06-09 14:02:52 · 239 阅读 · 0 评论 -
JAVA多线程的初级认识7-ConcurrentHashMap简要分析
CHM1.7和1.8的更改CHM核心API分析putgetsizerehash图解分析原创 2019-06-09 14:09:17 · 173 阅读 · 0 评论