保持Java Thread一直运行

时间:2018-03-08 23:22:31

标签: java multithreading javafx daemon runnable

寻找一种优雅的方法来保持Java线程在后台始终运行,只要应用程序正在运行,JavaFX应用程序检查以查看用户凭据是否有效。 我在Thread内要做的事情是在某个时间间隔之后使用户失效

1 个答案:

答案 0 :(得分:3)

如果您想超时登录,可以使用PauseTransition使登录失效:

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

如果您需要在任何时候重置超时,您可以执行

logoutTimer.playFromStart();

它将重置计时器。

您还可以使用JavaFX属性在应用程序中轻松管理。 E.g。

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());