正在更新计时器任务中的静态变量



我设置了一个简单的Java计时器,在它之前有一个静态布尔值。有办法在计时器内更新该布尔值吗?

我想更新在timerTask内部的第一行中声明的名为b的布尔值。b是静态的,不能在定时器任务内正常更改。有办法绕过这个吗?

boolean b = false;
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
try {
//update the value of b
}
catch (Exception e) {
e.printStackTrace();
}
}
};
timerTask.run();

您需要一个引用来更新值。一个简单的线程保存解决方案是使用AtomicBoolean,如下

import java.util.TimerTask;
import java.util.concurrent.atomic.AtomicBoolean;
public class MyClass {
public static void main(String args[]) {
AtomicBoolean b = new AtomicBoolean();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println(b);
b.set(true);
System.out.println(b);
}
};
timerTask.run();
}
}

最新更新