Android线程使用synchronized锁定

时间:2014-10-02 02:42:27

标签: android

我正在尝试在Android中使用锁来检测活动何时处于活动状态,我的应用流程如下:

我正在使用按服务运行的线程,我有一个活动。 线程将检查活动是否打开,

1- If it is open/active then it will NOT update the DB. 
2- If the activity/active isn't open then it will update the DB. 

以下代码是否正确,

在活动方面,我正在这样做,

public void onCreate(Bundle savedInstanceState) {
    GlobalVars.setActivityActive()

}

在线程方面,我正在这样做,

if (GlobalVars.isActivityActive())
   do nothing
else
   update DB

全球变量类就是这个

public class GlobalVars extends Application {

    private boolean ActivityActive;

    public boolean isActivityActive() {
        synchronized (this) {
            return ActivityActive;
        }
    }

    public void setActivityActive(boolean ActivityActive) {
        synchronized (this) {
            this.ActivityActive = ActivityActive;
        }
    }

}

我的问题是这个,是否正确使用synchronized?或者我应该这样做,

public boolean isActivityActive() {

        return ActivityActive;

}

更新

这就是我最终根据答案/评论使用它的方式

    private volatile boolean activityActive;// this would be enough to be thread safe

1 个答案:

答案 0 :(得分:0)

是的,那会有用。

但是,这很疯狂。如果你要同步#34;这个"你可以通过同步方法使它变得更简单。 ...那么ReentrantLock是什么?

...你可以通过使用AtomicBoolean使整个事情变得更简单。