F_G

许多问题需要说清楚就可以&&走永远比跑来的重要

导航

Java多线程当中的violate

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

posted on 2015-07-11 14:39  F_G  阅读(1723)  评论(0编辑  收藏  举报