gpt4 book ai didi

java - Java 中的多线程任务仅在 onClick Button 时工作一次

转载 作者:行者123 更新时间:2023-12-02 02:05:09 25 4
gpt4 key购买 nike

附件是下面的代码片段。我是多线程新手。尝试进行多线程工作。但是,在我第一次单击按钮后,第二次之后将不再“创建线程”并运行我的方法。

我还尝试过实现 Runnable 接口(interface),但它无法获取我的 Anchorpane 引用来加载 snackbar ,因此我使用了任务方法。感谢您的帮助!

    @FXML
private AnchorPane anchorPane;

Thread thread;
@FXML
void onClickLoginButton(ActionEvent event) throws Exception {
thread = new Thread(task);
thread.start();
}
Task<Void> task = new Task<Void>() {
@Override
public Void call(){
//System.out.println("Thread running"+thread.getId());
try {
credential = login.login();
} catch (UnknownHostException u) {
Platform.runLater(() -> {
System.out.println("No wifi");
JFXSnackbar snackbar = new JFXSnackbar(anchorPane);
snackbar.show("Please check your internet connection", 3000);
//u.printStackTrace();
});
} catch (Exception e) {
//e.printStackTrace();
}
//System.out.println("Thread running"+thread.getId());
return null;
}
};

最佳答案

它只运行一次的原因与Task的一般工作方式有关

每个任务的文档在这里:https://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html

As with FutureTask, a Task is a one-shot class and cannot be reused. See Service for a reusable Worker.

因此,如果您想多次重复上述过程,使用 Task 并不是一个好的选择。检查您想要实现类似目标的工作人员和服务的推荐替代方案。

关于java - Java 中的多线程任务仅在 onClick Button 时工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50953221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com