了解并发的内幕也是成为一个高级程序员不可缺少的课程
进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例。
线程是进程的一个实体。
进程——资源分配的最小单位,线程——程序执行的最小单位。
![](https://img.haomeiwen.com/i1695313/e896c812ab06fcf7.png)
Java内存模型:
![](https://img.haomeiwen.com/i1695313/2175c581d8ecc360.png)
![](https://img.haomeiwen.com/i1695313/d33c5d6e61048867.png)
![](https://img.haomeiwen.com/i1695313/b8e7b99fe91529ad.png)
![](https://img.haomeiwen.com/i1695313/52c1da5900681844.png)
![](https://img.haomeiwen.com/i1695313/8e78815387ae0daa.png)
![](https://img.haomeiwen.com/i1695313/836b8d91c1ad5594.png)
三大性质总结:
原子性:原子性是指一个操作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。
可见性:可见性是指当一个线程修改了共享变量的值,其他线程能够立即得知这个修改。
有序性:synchronized语义表示锁在同一时刻只能由一个线程进行获取,当锁被占用后,其他线程只能等待。因此,synchronized语义就要求线程在访问读写共享变量时只能“串行”执行,因此synchronized具有有序性。
先行先发原则:
如果两个操作不再之间的关系不在如下列内,并且无法从下列规则中推导出来的话,它们就没有顺序性保证,Java虚拟机可以对它们随意地进行重排序。
![](https://img.haomeiwen.com/i1695313/b3df45c98ef3773d.png)
网友评论