问题请看注释public class AlwaysEven {
private int i;
public void next() { i++; i++; }
public int getValue() { return i; }
public static void main(String[] args) {
final AlwaysEven ae = new AlwaysEven();
new Thread("Watcher") {
public void run() {
while(true) {
int val = ae.getValue();
if(val % 2 != 0) { //看代码得话next函数应该总是产生偶数啊,val为偶数猜对
System.out.println(val); //为什么会进入到这里呢,难道线程是在next函数执行第一个i++的时候启动了?
System.exit(0);
}
}
}
}.start();
while(true)
ae.next();
}
} ///:~
private int i;
public void next() { i++; i++; }
public int getValue() { return i; }
public static void main(String[] args) {
final AlwaysEven ae = new AlwaysEven();
new Thread("Watcher") {
public void run() {
while(true) {
int val = ae.getValue();
if(val % 2 != 0) { //看代码得话next函数应该总是产生偶数啊,val为偶数猜对
System.out.println(val); //为什么会进入到这里呢,难道线程是在next函数执行第一个i++的时候启动了?
System.exit(0);
}
}
}
}.start();
while(true)
ae.next();
}
} ///:~
i++,i++,另外,这应该是个死循环吧
你该成i=i+2;试试
线程可以随时启动,难道线程是在next函数执行第一个i++的时候启动了? 我感觉不管怎么样线程也要等next函数执行完了才启动吧