此问题已在两篇博文(http://dow.ngra.de/2008/10/27/when-systemcurrenttimemillis-is-too-slow/,http://dow.ngra.de/2008/10/28/what-do-we-really-know-about-non-blocking-concurrency-in-java/)中讨论过,但我还没有听到明确的答案。如果我们有一个线程,这是否:运行这是检测心跳线程安全和一致的方式吗?
public class HeartBeatThread extends Thread {
public static int counter = 0;
public static volatile int cacheFlush = 0;
public HeartBeatThread() {
setDaemon(true);
}
static {
new HeartBeatThread().start();
}
public void run() {
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
counter++;
cacheFlush++;
}
}
}
而且很多客户的以下内容:
if (counter == HeartBeatThread.counter) return;
counter = HeartBeatThread.cacheFlush;
是线程安全与否?