volatile 的使用

volatile变量不具备原子特性。单独使用不足以实现计数器、互斥锁或任何具有与多个变量相关的不变式的类。

正确使用volatile的例子:

1、状态标记

volatile boolean shutdownRequested;

public void shutdown( ){ shutdownRequested = true; }

public void dowork( ){

    while(!shutdownRequested){

        //dosomethings

    }

}

2、开销较低的读-写锁策略

public class CheesyCounter{

@GuardedBy("this")
private volatile int value;

public int getValue(){
    return value;
}

public synchronized int increase(){
    value ++;
}

}

参考文章:https://www.ibm.com/developerworks/cn/java/j-jtp06197.html

猜你喜欢

转载自blog.csdn.net/baofengyu90/article/details/84405099
今日推荐