在学习多线程的时候一头就扎进去了,学习同步机制、琢磨JMM,是想在脑海中形成多线程概念和模型,但是有一个疑问是:多线程为什么是不安全的呢?
可以肯定的是种种同步机制和方法是解决这种不安全问题的方式。
因为:进程内所有的线程共用这一块进程空间,是硬件架构导致。
cpu在执行时是从缓存中读取数据,至于为什么请看计算机原理,那么问题就来了,两个线程同时并行执行,各自从主存拷贝一份数据到各自缓存,各自不可见,最后刷新数据到主存,得到的结果就很大可能不是我们想要的结果。
所以就有了java提供的关键字(synchronized,volatile),实现原理就是围绕怎么去处理这个不安全的现象!然后再学习多线程的时候就能懂,为什么要这样实现!