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

Java UI线程和初始化线程之间的成员变量可见性,java,android,Java,Android,我目前正试图在构建视图的过程中实现一个初始化器线程,以避免当UI线程占用太长时间时android发出的“无响应”消息-当初始化器线程仍在工作时,UI线程将显示一个简单的加载消息并响应方向更改等,当初始化器线程完成时,UI线程将使用初始化器线程初始化的资源重新生成视图。虽然我已经实现了一个volatile boolean,以便两个线程通信初始化过程的当前状态,但我不确定是否有必要将所有初始化的资源定义为volatile,因为它们不会同时被两个线程访问。初始化线程终止后,UI线程是否可以看到初始化线

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


任何建议都将不胜感激。

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

volatile boolean done;
...

doStuff();
done = true;

done=true
更改在另一个线程中可见时,之前所做的更改(在
doStuff()
中)也保证可见。

正是我需要知道的……非常感谢……标记为已回答:)