我会把它缩短。
鉴于此代码:
public class Test {
private static long counter = 1000000;
public static void main(String[] args) {
T t = new T();
t.start();
while(counter >= 0){
counter--;
System.out.println(counter);
}
System.out.println(t.isAlive());
}
private static class T extends Thread{
@Override
public void run() {
while(counter > 0);
System.out.println("end reached");
}
}
}
为什么以众神的名义不打印"结束了#34;?计数器下降到-1,t仍然存在。如果我减少计数器,它有时会起作用。
答案 0 :(得分:2)
你需要制作计数器volatile
。线程T使用本地副本。