gpt4 book ai didi

java - 获取线程的返回值

转载 作者:行者123 更新时间:2023-11-29 05:33:26 24 4
gpt4 key购买 nike

我在 Java 中定义了以下任务和线程:

private class FinderTask extends Task<mytype>{
public FinderTask(){
...
};

@Override
protected mytype call() throws Exception {

mytype t = new mytype();
...
return t;
}
}

开始线程

MainController.FinderTask task = new myClass.FinderTask();
task.runningProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> ov, Boolean wasRunning, Boolean isRunning) {
if (!isRunning) {

System.out.println("task finished");
}
}
});

final Thread thread = new Thread(task , "finder");
thread.setDaemon(true);
thread.start();

如何获取调用函数的返回值?

最佳答案

你可以只使用 task.getValue();这将在任务状态转换为 SUCCEEDED 之前设置;所以它将在监听器的 if 子句中工作(你需要让你的任务最终完成)。

值也是一个可观察的属性,所以你也可以这样做

task.valueProperty().addListener(new ChangeListener<Task>() {
@Override
public void changed(ObservableValue<? extends mytype> obs, mytype oldValue, mytype newValue) {
if (newValue != null) {
System.out.println("Result of task "+newValue);
}
}
});

关于java - 获取线程的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20327025/

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