一直保持 Java 线程 运行

Keep Java Thread running all the time

正在寻找一种优雅的方式来保持 Java 线程 运行 始终在后台,只要应用程序是 运行,对于 Java FX 应用程序检查用户凭据是否有效。 我将在 Thread 内做的是在一定时间间隔后使用户过期

如果您想使登录超时,您可以使用 PauseTransition 使登录过期:

Duration timeout = Duration.minutes(...);
PauseTransition logoutTimer = new PauseTransition(timeout);
logoutTimer.setOnFinished(e -> expireCredentials());
logoutTimer.play();

如果您需要随时重置超时,您可以这样做

logoutTimer.playFromStart();

它会重置计时器。

您还可以使用 JavaFX 属性使其在应用程序中易于管理。例如

private BooleanProperty loggedIn = new SimpleBooleanProperty();

// ...

public void expireCredentials() {
    loggedIn.set(false);
}

然后需要用户登录的操作可以勾选这个属性:

if (loggedIn.get()) {
    doSecureOperation();
}

和UI控件可以将它们的状态绑定到它:

submitSecureDataButton.disableProperty().bind(loggedIn.not());
loginButton.disableProperty().bind(loggedIn);

或者也许

private ObjectProperty<Credentials> credentials = new SimpleObjectProperty<>();

// ...

public void expireCredentials() {
    credentials.set(null);
}

// ...

submitSecureDataButton.disableProperty().bind(credentials.isNull());
loginButton.disableProperty().bind(credentials.isNotNull());