10、volatile的作用是强制从公共堆栈中读取变量的值,而不是从线程私有数据堆栈取得变量的值
实例情况:在JVM被设置为-server模式时,为了线程的运行效率,线程一直在私有堆栈中取得线程变量的值,
11、volatile增加了实例变量在多线程之间的可见性,但它却不具有同步性,也就不具备原子性
解释:被volatile修饰的变量,线程每次获取变量的值时强制从公共内存中获取,并不从线程的工作内存中获取,多线程访问时并不会发生阻塞
12、i++并不是原子操作,操作步骤分解
1)从内存中取值
2)计算i的值
3)将i的值写到内存中
13、单个原子操作是安全的,但是多个原子操作就是不安全
例如:
14、synchroized可以使多个线程访问同一个资源具有同步性,而且它还有将线程工作内的私有变量与公共内存中的变量同步的功能