UI线程和初始化线程之间的成员变量可见性

时间:2013-09-06 21:20:24

标签: java android

我目前正在尝试在构建视图期间实现初始化线程,以避免当UI线程被绑定太久时android发出的“无响应”消息 - 而初始化线程仍在工作UI线程将显示简单的加载消息并响应方向更改等,并且当初始化线程完成时,UI线程将使用初始化线程初始化的资源重新生成视图。虽然我已经实现了一个volatile布尔值,以便两个线程能够传达初始化过程的当前状态,但我不确定是否有必要将所有初始化资源定义为volatile,因为它们不会被同时访问两个线程。初始化线程终止后,初始化线程初始化的对象/变量是否对UI线程可见?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

这取决于你如何使用volatile boolean。它确实建立了一个先发生过的关系,因此:

volatile boolean done;
...

doStuff();
done = true;

如果在另一个帖子中看到done = true更改,则之前(doStuff()中)所做的更改也会保证可见。