1.可见性

抽象概念并不真实存在。描述的是一组规范或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式

JMM关于同步的规定;

1.线程解锁前,必须把共享变量的值刷新回主内存

2.线程加锁前,必须读取主内存的最新值到自己的工作内存

3.加锁解锁是同一把锁

JMM(java内存模型)

JMM(java内存模型)

 

2.原子性

原子性:不可分割,完整性,也即某个线程正在做某个具体业务时,中间不可以被加塞或者分割。需要整体完整;要么同时成功,要么同时失败。

如何解决原子性:

1.加synchronized ,没有必要。效率太低 不推荐

2.使用JUC下AtomicInteger (*推荐操作)

JMM(java内存模型)

JMM(java内存模型)

JMM(java内存模型)

1.定义AtomicInerger;

2.atomicInerger.getAndIncrement() ==i++;i=1;

3.输出值 对象.atomicInteger

 

3.有序性

-禁止指令重排 多线程中变量要加volatile

(做学习记录所用,如有错误,请提出改正谢谢@[email protected]

 

相关文章: