Java中的变量是否可以在时间限制后恢复到之前的状态。例如:如果我有一个 boolean 变量,例如x,它被初始化为false 后来该值更改为 true。该变量是否可以在时间限制后恢复到其原始值(即 false)。可以在不使用计时器或是否有任何设计模式可以实现此功能。
最佳答案
找到一个保持状态并根据超时否定状态的类的小示例。
将其视为 PoC。如果您想在多线程应用程序中使用它,您可能需要对并发访问或可见性进行一些改进。
public static void main(String[] args) throws Exception {
VolatileState volatileState = new VolatileState();
System.out.println("initial: " + volatileState.getState());
volatileState.setState(true, 5);
System.out.println("valid : " + volatileState.getState());
TimeUnit.SECONDS.sleep(10);
System.out.println("reset : " + volatileState.getState());
}
在给定时间内保持状态的类。
class VolatileState {
private long timeSet = Long.MAX_VALUE;
private long timeToLive = 0;
private boolean state;
/**
* Keep the given state for <code>timeToLife</code> seconds.
*/
void setState(boolean state, long timeToLive) {
this.timeSet = System.currentTimeMillis();
this.timeToLive = TimeUnit.MILLISECONDS.toSeconds(timeToLive);
}
boolean getState() {
if (System.currentTimeMillis() > timeSet + timeToLive ) {
state = !state;
System.out.println("state reset to " + state);
}
return state;
}
}
关于java - 状态维护变量在一段时间后返回到之前的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29554486/