如何将变量传递给TimerTask run()?

问题描述 投票:0回答:1

我可以更改上面代码中定义的 run() 方法中的变量吗?

boolean flag = false;
        
Timer timer = new Timer();
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        flag = true; // error
        logger.info("flag changed");
    }
};
    
timer.schedule(task, 30_000);

while(true) {
    if(flag) break;
    ...
}
java
1个回答
0
投票

以下解决方案有效:

AtomicBoolean flag = new AtomicBoolean(); //initial value false
Timer timer = new Timer();

TimerTask task = new TimerTask() {
    @Override
    public void run() {
        flag.set(true);
    }
};
    
timer.schedule(task, 30_000);

while(!flag.get()) {
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.