在定时器任务中更新静态变量
Updating static variables in a Timer Task
我设置了一个简单的 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();
}
}
我设置了一个简单的 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();
}
}