java - 状态维护变量在一段时间后返回到之前的状态

标签 java variables

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/

相关文章:

java - Android 应用程序错误 NullPointerException?

powershell - 计算变量

c++ - Arduino 结构变量似乎在没有明确重新分配的情况下被重新分配

javascript - Eloquent JavaScript : immutable string values

variables - 如何通过包共享变量

java - 覆盖 System.out/err.println

Java Date Parsing - 如何用 Tues 解析日期?

Javac 无法正常工作或者我做错了什么?

java - 使用 netbeans 将菜单栏添加到框架的垂直位置

java - java文件中的其他方法是否可以在Android Studio的onCreate方法中调用?