我有 runnable 正在从互联网下载一些文件,它看起来如下:
class Downloader implements Runnable {
volatile Status status;
public void run() {
// ...
while (status.isInProgress()) { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
状态如下所示:
public enum Status {
PAUSED {
public int someData() { return 0; }
},
INPROGRESS {
public int someData() { return 1; }
}
public abstract int someData();
private String msg;
public String getSomeMsg() {
return msg;
}
public void setSomeMsg(String s) {
msg=s;
}
public boolean isInProgress() {
return this == INPROGRESS;
}
}
Run Code Online (Sandbox Code Playgroud)
当用户按下暂停按钮时,状态变量从 GUI 线程设置为 PAUSED。
代码使用java 1.6编译,针对Android平台编译。
我的问题是,像这样设置/读取 Enum 是否是线程安全的?我在这里阅读了很棒的文章:
http://javarevisited.blogspot.com/2011/06/volatile-keyword-java-example-tutorial.html
我非常确信它是保存,但它并没有说太多关于枚举。
| 归档时间: |
|
| 查看次数: |
5464 次 |
| 最近记录: |