
java并发
五色水彩笔
这个作者很懒,什么都没留下…
展开
-
Java内存模型JMM
Java内存模型定义:为了屏蔽各种硬件和操作系统的内存访问差异,以保证java程序在各种平台下都能达到一致的并发效果。 JMM规范:规定了一个线程如何、何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步地访问共享变量。 java内存模型 Heap:java中的堆,也就是运行时的数据区 java内存模型:同步操作与规则 ...原创 2019-09-17 22:56:31 · 123 阅读 · 0 评论 -
CPU多级缓存
cpu缓存存在的意义:cpu的频率太快,主存跟不上,这样在处理器的时钟周期里,cpu常常需要等待主存,导致资源的浪费。所以cpu缓存的出现就是为了缓解cpu和内存之间速度的不匹配问题。 时间局部性:如果某个数据被访问,那么在不久的将来它很可能被再次访问。 空间局部性:如果某个数据被访问,那么与它相邻的数据很快也可能被访问。 缓存一致性(MESI):用于保证多个cpu cache之间缓存数据的一...原创 2019-09-18 00:35:55 · 371 阅读 · 0 评论 -
线程安全
111原创 2019-09-27 00:30:06 · 201 阅读 · 0 评论 -
Synchronized
Synchronized:可以在任意对象上加锁,而加锁的这段代码称为互斥区或临界区。 public class SynchronizedDemo { /** * 线程不安全示例 */ class MyThread1 extends Thread{ private int count = 5; @Override ...原创 2019-09-26 22:37:42 · 175 阅读 · 0 评论 -
安全发布对象
发布对象:使一个对象能够被当前范围之外的代码所使用。 对象逸出:一种错误的发布。当一个对象还没有构造完成,就使它被其他线程所见。 发布对象的线程不安全示例: public class UnsafePublish { private String[] states = {"a","b","c"}; public String[] getStates(){ return...原创 2019-09-27 14:31:32 · 183 阅读 · 0 评论 -
不可变对象
不可变对象需要满足的条件: 对象创建以后其状态就不能修改 对象所有域都是final类型 对象是正确创建的(在对象创建期间,this引用没有逸出) final关键字:类、方法、变量 修饰类:不能被继承,final修饰类的所有方法都被隐式修饰为fianl方法 修饰方法:1、锁定方法不被继承类修改;2、效率 修饰变量:基本数据类型变量(初始化后不能再修改),引用类型变量(初始化后不能再指向另外一个...原创 2019-09-30 18:29:32 · 264 阅读 · 0 评论