if / switch评估是原子的吗?

时间:2016-09-24 08:53:03

标签: java android asynchronous

让我说我开始并AsyncTask并持有对它的引用:

AsyncTask task = new SomeAsyncTask().execute();

然后在某个时刻,当任务仍在运行时,我执行以下操作:

if(task.getStatus() == AsyncTask.Status.RUNNING) {
    task.cancel(true);
}

<{strong> AsyncTask之后FINISHED task.getStatus() == AsyncTask.Status.RUNNING {}返回true 之前 {{1>被叫?

换句话说,使用上面的cancel()代码是否可能会在完成的cancel()上调用?

2 个答案:

答案 0 :(得分:3)

是的,这是可能的,这是异步的本质。编程。

但是,如果任务在这两个陈述之间完成,那么您对cancel的呼吁将是良性的。

答案 1 :(得分:0)

是的,它可能会发生,所以最好的方法是用来观察STATUS变量值的变化。 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html,有关详细信息,请查看链接。