我有一堂课,例如:
public class Test {
private static Thread aThread;
private static Loopy aLoop;
public Test() {
}
public static void main(String[] args) {
startUpdate();
stopUpdate();
startUpdate();
}
public static void startUpdate() {
aLoop = new Loopy();
aThread = new Thread(aLoop);
aThread.start();
}
public static void stopUpdate() {
if (aThread != null) {
aLoop.finish();
}
}
}
具有如下所示的可运行代码:
public class Loopy implements Runnable {
private static String status = "R"; // Run
public void run() {
while (status.equals("R")) {
// Do Stuff
}
}
public void finish() {
status = "F"; // End Run
}
}
第一次调用 startUpdate 有效。
StopUpdate 按计划工作。
第二次调用 startUpdate 导致没有工作完成,因为状态仍然等于“F”,即使我正在启动一个新的 Loopy 实例(对我来说)应该具有默认值“R”。
状态是跨实例持续存在,还是我犯了一个我还没有发现的错误?