【发布时间】:2013-03-29 19:47:40
【问题描述】:
我正在编写小应用程序,现在我发现了一个问题。 我需要调用一个(以后可能是两个)方法(这个方法加载一些东西并返回结果)而不滞后于应用程序的窗口。
我找到了 Executor 或 Callable 这样的类,但我不明白如何使用这些类。
您能否发布任何对我有帮助的解决方案?
感谢所有建议。
编辑:方法必须返回结果。这个结果取决于参数。 像这样的:
public static HtmlPage getPage(String page) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
return webClient.getPage(page);
}
此方法的工作时间约为 8-10 秒。执行此方法后,可以停止线程。但我需要每 2 分钟调用一次方法。
编辑:我用这个编辑了代码:
public static HtmlPage getPage(final String page) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
Thread thread = new Thread() {
public void run() {
try {
loadedPage = webClient.getPage(page);
} catch (FailingHttpStatusCodeException | IOException e) {
e.printStackTrace();
}
}
};
thread.start();
try {
return loadedPage;
} catch (Exception e) {
return null;
}
}
使用此代码,我再次遇到错误(即使我将 return null 放在 catch 块之外)。
【问题讨论】:
-
Executor和ExecutorService在 javadoc 中有示例。 a topic 在官方教程的 concurrency 线程上。这就是我开始的地方。如果您不理解这些材料中的具体内容,或者您一直无法使用其中的信息,您应该提出一个新问题。 -
我看到了例子,但我无法实现我想要的。
-
我认为您正在寻找
ExecutorService.submit()和Callable<HtmlPage>,因此请关注这些和相关类/方法的文档。submit()应该返回一个Future<HtmlPage>,当结果可用时,它会让你做一些事情(比如更新 UI)。 -
我会看到的,谢谢。
标签: java multithreading javafx ui-thread