violate在多线程当中的用来修饰某个变量,这个变量只有一份,也就是不存在多线程cache它们本地的情况出现。从而保证对他的读和写是唯一的,不会存在不一致的情况。
一、适用的情况
对于某个变量只有读和写两种单一操作。
violate int count;
count=1;
count=0;
if(count==0){...}
上面都是单一操作,而
count=cout+1;
count++;
不是单一读写操作,因为在上面两种操作当中都涉及了先读然后在写的操作过程,这样volate无法保证原子性。
二、不是用的情况
synchronized对于代码块也有同步作用,但是violate做不到
参考
[1] http://sakyone.iteye.com/blog/668091
时间: 2024-10-03 20:34:45