我已经运行它正在从互联网下载一些文件,它看起来如下:
class Downloader implements Runnable {
volatile Status status;
public void run() {
// ...
while (status.isInProgress()) { ... }
}
}
状态如下:
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;
}
}
当用户按下暂停按钮时,状态变量从 GUI 线程设置为暂停。
代码使用java 1.6编译,针对Android平台编译。
我的问题是这样设置/读取枚举是否是线程安全的?我在这里阅读了很棒的文章:
http://javarevisited.blogspot.com/2011/06/volatile-keyword-java-example-tutorial.html
我很相信它是保存的,但它并没有说太多关于枚举。