1.可见性
抽象概念并不真实存在。描述的是一组规范或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式
JMM关于同步的规定;
1.线程解锁前,必须把共享变量的值刷新回主内存
2.线程加锁前,必须读取主内存的最新值到自己的工作内存
3.加锁解锁是同一把锁
2.原子性
原子性:不可分割,完整性,也即某个线程正在做某个具体业务时,中间不可以被加塞或者分割。需要整体完整;要么同时成功,要么同时失败。
如何解决原子性:
1.加synchronized ,没有必要。效率太低 不推荐
2.使用JUC下AtomicInteger (*推荐操作)
1.定义AtomicInerger;
2.atomicInerger.getAndIncrement() ==i++;i=1;
3.输出值 对象.atomicInteger
3.有序性
-禁止指令重排 多线程中变量要加volatile
(做学习记录所用,如有错误,请提出改正谢谢@[email protected])