gpt4 book ai didi

java - 如何从任务内部设置 Var?

转载 作者:行者123 更新时间:2023-11-29 03:28:26 25 4
gpt4 key购买 nike

首先,我是 JavaFX 的新手,如果这个问题很愚蠢,我深表歉意。如何从任务中获取返回对象?

这是我的问题:

我想从 Mock 中获取对象列表。 Mock 有 1 到 5 秒的延迟。但我不希望我的 GUI 这次卡住。

在 Java.Swing 中,使用线程很容易,但据我所知,JavaFX 具有任务。

我读过很多教程,但它们到处都返回一个文本属性。所以这是我的问题:如何使用任务/线程(在我的例子中是列表)的计算结果设置对象的值

谢谢。

最佳答案

雷,

您是对的,这些示例似乎掩盖了从任务中获取结果。据我所知,您可以通过两种方式取回结果:

  1. 通过Task类的getValue()方法(我是这样实现的)
  2. 通过父 FutureTask 类的 get() 方法(我没用过这个,但原则上应该可以)。

对于第一个 getValue() 方法,您需要确保任务通过任务调用方法中的 updateValue(...) 方法设置值.然后在 WorkerStateEvent 上放置一个监听器

myTask.setOnSucceeded(new EventHandler<WorkerStateEvent>() {

@SuppressWarnings("unchecked")
@Override
public void handle(WorkerStateEvent event) {
ReturnType rt = (ReturnType) event.getSource().getValue()
// ... other stuff to do here ...
}
});

第一种方法有点冗长,但它有效,并允许在任务完成后进行一些更复杂的操作。

第二种方法更简单直接,但不能让您尽可能多地控制任务完成后要做什么。使用 FutureTask 的 get() 方法,代码应该阻塞,直到 Task 返回值。所以使用它应该很简单:

//
// Start the task in a thread (using whatever approach you like)
//before calling the get() method.
//
ReturnType rt = myTask.get();

我在其他代码中使用了 Future 对象,但我没有在 FX api 中使用过 FutureTask,所以我不能告诉你它是否有隐藏的陷阱.

祝你好运

关于java - 如何从任务内部设置 Var?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755555/

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