在定时器任务中更新静态变量

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();
    }
}