我正在做一个javafx应用程序并尝试使用线程。我对s.o上的类似问题进行了一些研究,但没有一个能够完全回答我的问题。
这是我第一次使用java fx中的线程。
此代码从互联网下载2张图像并将其显示在ImageView中,还会返回一些文本并将其放入textArea中。没有线程执行的这段代码将花费大约15秒的GUI冻结。
Service<Void> service = new Service<Void>() {
@Override
protected Task <Void> createTask() {
return new Task<Void>() {
@Override
protected Void call() throws Exception {
//Background work with long tasks
return null;
}
};
Platform.runLater(new Runnable() {
@Override
public void run() {
try {
//Update GUI (short task)
});
return null;
}
};
}
};
service.start();
但是当我使用并发线程执行此代码时,GUI不再被冻结(至少)但代码不能很好地执行(图像不会下载,因此GUI不会更新)。在这些情况下我该怎么办?