【发布时间】:2015-03-06 02:36:18
【问题描述】:
是否有与 Java SwingWorker 类等效的 JavaFX?
我知道 JavaFX Task 但您只能发布字符串消息或进度。我只想在 GUI 线程中调用一个方法,就像我对 SwingWorker 所做的那样(通过发布任意类型的消息)。
这是我的意思的一个例子:
class PrimeNumbersTask extends
SwingWorker<List<Integer>, Integer> {
PrimeNumbersTask(JTextArea textArea, int numbersToFind) {
//initialize
}
@Override
public List<Integer> doInBackground() {
while (! enough && ! isCancelled()) {
number = nextPrimeNumber();
publish(number);
setProgress(100 * numbers.size() / numbersToFind);
}
}
return numbers;
}
@Override
protected void process(List<Integer> chunks) {
for (int number : chunks) {
textArea.append(number + "\n"); // HERE: execute in GUI thread
}
}
}
解决方案
非常感谢您的回答。我正在寻找的解决方案是使用Platform.runLater(Runnable guiUpdater)。
【问题讨论】:
标签: java multithreading javafx thread-safety worker