【发布时间】:2013-03-12 01:57:55
【问题描述】:
我试图找出我的用户界面何时运行,并且有一个聪明的想法,即向 uiThread 发布一个可运行的对象,它唯一的工作就是设置一个标志。我尝试在uiIsRunning 上使用volatile 关键字,但eclipse 不允许这样做,我还不明白。
但令我惊讶的是,当我在uiIsRunning 上尝试下面没有 final 修饰符的代码时,我被正确地告知如果该局部变量是 final,我只能在嵌入式类中使用局部变量。所以我做了uiIsRunning final,令我惊讶的是,Eclipse 对我的uiIsRunning = true; 行完全没问题,也就是说,Eclipse 认为我可以在这个嵌套类中设置我的final 变量的值!
如果有人能告诉我我需要做什么来获得我想要的操作:在我当前的线程中设置一个标志为 false,然后在我发布它的线程执行它时设置为 true,我将不胜感激.
final boolean uiIsRunning = false;
uiHandler.post(new Runnable() {
@Override
public void run() {
uiIsRunning = true;
}
});
【问题讨论】:
-
为什么要将一个局部变量共享给多个线程?
-
你不能。代码无法编译。不是一个真正的问题。
标签: java android multithreading final volatile