并发编程
qq_30409323
这个作者很懒,什么都没留下…
展开
-
JMM
首先要说JMM 是啥。为啥要关心JMM。JMM全程是java 内存 模型 ,说到底是讲一个java程序到底是如何分配内存的。不了解这个,后面的线程安全,后面的垃圾回收就没有理论基础了,更别说什么虚拟机优化了。java把内存分成了程序计数器(Program Counter Register)Java栈(VM Stack)本地方法栈(Native Method Stack)方法区(Met...原创 2019-04-04 10:22:34 · 145 阅读 · 0 评论 -
并发三大特性 原子 有序 可见
1.原子性(Atomicity):一个操作不能被打断,要么全部执行完毕,要么不执行。java里头哪些语句是原子性的。真少。原子操作包括:1)除long和double之外的基本类型的赋值操作2)所有引用reference的赋值操作3)java.concurrent.Atomic.* 包中所有类的一切操作。看见没。只有赋值才是原子操作。什么加减。什么调用函数统统不算。都是有可能被打断的。最常...原创 2019-04-04 12:08:11 · 148 阅读 · 0 评论 -
threadlocal强引用 弱应用 软引用 虚引用
有时候还是得服老外在编程方面的那种创造力,中国人哪怕是什么bat啊。还是别的什么互联网公司没弄出什么让你感觉的确是很让人惊艳的东西。国内这批开源你看了源码就如同看了中国制造。基本是在别人的基础上组合加工。吐槽就到这里,还是先开始说这个threadlocal这个类。一般一个类的属性变量按照java内存模型的设计都属于共享内存。一旦涉及多线程编程。对这个变量的修改读取基本都是线程不安全。当然要想安...原创 2019-04-01 12:02:01 · 2212 阅读 · 1 评论 -
synchronized 只看一篇就够了
这个关键字涉及的知识点比较多。这里准备从她的作用。她的使用。她的原理。以及她的兄弟姐妹四个方面来讲。首先她的作用。1.多线程同步里头作为 锁 能锁类。能索对象。能锁代码块2.在synchronized包含的代码块开头跟结尾的部分加入了共享变量的数据同步,我个人认为第二条才是为啥这个关键字起名的原因。为了同步嘛。至于如何同步在使用过程中一一解析先看常用锁的部分。修饰一个代码块,被修饰的...原创 2019-04-08 11:51:55 · 201 阅读 · 0 评论 -
volatile 只看一篇就够了
跟synchonized一样。主要讲这玩意能干啥,原理是什么,一般都怎么用1.这个关键字也是两个作用。 第一个能保证共享变量的可见性。 第二个是阻止指令重排序。上一篇讲synchonized 举了一个例子。 就是一个共享变量 在两个方法中。一个方法是修改。一个方法是读取。如何保证写的方法中修改了变量值,但是方法还没退出前方法切换到读方法让能读到修改的值。 当时用的是synchonized 强制...原创 2019-04-08 15:36:19 · 227 阅读 · 0 评论