【发布时间】:2021-03-15 20:50:48
【问题描述】:
我有一个持续运行的 Timer 类。当它达到五秒时,我想更改另一个类将使用的布尔值。但是,由于它有自己的线程,所以变量的值没有改变,我无法检索改变的布尔值。
public class Time extends TimerTask {
Timer s = new Timer();
boolean bool;
int secondsPassed = 0;
Toolkit toolkit = Toolkit.getDefaultToolkit();
public Time() {
bool = false;
}
TimerTask task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
secondsPassed++;
if(secondsPassed == 5) {
System.out.println("Seconds passed: " + secondsPassed);
toolkit.beep();
bool = true;
}
}
};
public void nextPanel() {
toolkit = Toolkit.getDefaultToolkit();
s.scheduleAtFixedRate(task, 1000, 1000);
}
public boolean throwbool() {
return bool;
}
}
我将如何停止线程,以便在五秒后“布尔”变为真,并且我可以在我的其他类中返回新值?另一个类是 GUI,因此更改的值可以检查何时切换到另一个面板。
【问题讨论】:
标签: java multithreading timer