为了提高程序的运行效率,我们在书写业务带代码的时候会时不时的引入缓存的概念,其实编译器也有一套自己的缓存策略,这个缓存策略在单线程奔跑的时候不会有人和问题,但是如果多线程的话,就会出现数据不一致的现象volatile 是一个类型修饰符(也是一个关键字),专门用来解决上述问题的,被修饰的变量不会放到缓存中,而是直接放到内存里,使用这个关键字修饰后的变量,在任何时候,任何线程中看起来都是一样的。
但是我们平时是不会用到这个东西的,就像上面说的,编译器是为了效率做的缓存策略,被这个关键字打破之后,程序的效率会大幅降低,这就是关键,我们多线程访问同一个成员变量时,一般用synchronized。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。