我正在寫小應用程序,現在我發現了一個問題。 我需要調用一個(稍後也許兩個)方法(此方法加載一些東西並返回結果),而不會在應用程序窗口中出現滯後。簡單的方法在新線程中調用方法
我發現類似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
了抓塊)。
['Executor'(http://docs.oracle。 com/javase/7/docs/api/java/util/concurrent/Executor.html)和['ExecutorService'](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent /ExecutorService.html)在javadoc中有示例。和官方教程中的* concurrency *線程中的[主題](http://docs.oracle.com/javase/tutorial/essential/concurrency/exinter.html)。那就是我開始的地方。你應該問一個新的問題,如果你不明白這些材料中的某些*特定*,或者如果你堅持使用它們中的信息。 – millimoose 2013-04-07 20:03:31
我看到了這些例子,我不能達到我想要的。 – Sk1X1 2013-04-07 21:33:58
我*想*你在找什麼[''ExecutorService.submit()'](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html#submit (java.util.concurrent.Callable))與'Callable',所以請關注這些文檔以及相關的類/方法。 'submit()'應該返回一個'Future ',它可以讓你在結果可用時做一些事情(比如更新UI)。 –
millimoose
2013-04-07 21:50:45