代码大意如下——
首先,我写了一个类,继承timertask
class MyTask extends TimerTask{
public boolean flag;//其中一个属性,用来记录task完成的结果 public void run(){
if(某条件)
flag = true;
}
}第二,写了一个普通类,里面的一个方法依赖该线程的执行结果
class MyClass{
MyTask myTask=new MyTask();
public void aMethod(){
while(!myTask.flag)
continue;
doOtherThing();
}
}该方法需要一直等到线程的flag属性为真时,才能做后续处理,否则就一直等待着。但是,用while循环这样一直等待,CPU占用率极高,请问大家有没有好的改进方法呢???
多谢!
首先,我写了一个类,继承timertask
class MyTask extends TimerTask{
public boolean flag;//其中一个属性,用来记录task完成的结果 public void run(){
if(某条件)
flag = true;
}
}第二,写了一个普通类,里面的一个方法依赖该线程的执行结果
class MyClass{
MyTask myTask=new MyTask();
public void aMethod(){
while(!myTask.flag)
continue;
doOtherThing();
}
}该方法需要一直等到线程的flag属性为真时,才能做后续处理,否则就一直等待着。但是,用while循环这样一直等待,CPU占用率极高,请问大家有没有好的改进方法呢???
多谢!
class MyClass{
MyTask myTask=new MyTask();
public void aMethod(){
while(!myTask.flag){
try{
Thread.sleep(100);
} catch(Exception ex){
}
doOtherThing();
}
}
while(!myTask.flag)
continue;
doOtherThing();
}
你这样程序就一直不停的循环着,把continue改成wait()。当run()方法执行的时候再调用notify()方法即可。