最近写了个代码学习一下外部类,内部类使用.一直有奇怪的问题没解决,这个胸闷啊
。用的是Eclipse,java。
代码结构式:
定义一个外部类whiletest,有一个boolean型的成员变量testhappen。定义一个内部类
Timer,内部类作为单独的线程每隔500ms改变一下testhappen的值(true/false)。
同时外部类的实例化对象调用print()是个死循环,一直打印testhappen的值。
按理说应该是当testhappen被Timer变为true之后,print()有输出;变为false之后,
print()没有输出。可是我运行时就是没有print()的输出。
奇怪的是什么,我在print()里面设置一个断电,debug调试的时候竟然能停下来。
总之就是正常全速运行不好使,debug没问题。
这个问题真是个小虫子,难受啊。
//Outerclass
public class whiletest {
boolean testhappen = true;
int i = 0;
void print(){
while(true) //Infinity loop
{
if(testhappen)
{
System.out.println("testhappen: "+testhappen);
testhappen = false;
}
}
}
//Innerclass to set testhapppen
public class timer extends Thread{
public void run(){
System.out.println("timer started");
while(true)
{
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
testhappen = true;
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
testhappen = false;
}
}
}
public static void main ( String[] args )
{
whiletest test = new whiletest(); //
test.new timer().start(); //Start timer;
test.print();
}
}