volatile 关键字
参考:http://baike.baidu.com/link?url=OQu43UIjrDTpdb36fcuAqOzqu9Q-aYE20ZZ8t7kLhxs8pNNBDpe1dUaqvCWCh41P
volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会
使用地方编辑
一般说来,volatile用在如下的几个地方:
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;
同步单例模式的建立:
private volatile static TimeAxisManagerImpl instance;
private volatile static TimeAxisManagerImpl instance; private Vector<TimeAxis> mAxis; private TimeAxisManagerImpl () { mAxis = new Vector<TimeAxis>(1); }; public static TimeAxisManagerImpl getInstance () { if(instance == null) { synchronized (TimeAxisManagerImpl.class) { if(instance == null) instance = new TimeAxisManagerImpl(); } } return instance; }