私は小さなアプリケーションを書いていますが、今問題が発見されました。 私は1つ(後で多分2)メソッドを呼び出す必要があります(このメソッドは何かをロードして結果を返します)。新しいスレッドでメソッドを呼び出す簡単な方法
私は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の例があります。そして、公式チュートリアルの*並行性*スレッドに関する[トピック](http://docs.oracle.com/javase/tutorial/essential/concurrency/exinter.html)それが私の出発点です。それらの資料で*特定の*を理解していない場合、またはそれらの情報を使用している場合は、新しい質問をする必要があります。 – millimoose
私は例を見た、私は私が欲しいものを達成することはできません芽。 – Sk1X1
I think *あなたが探しているもの['ExecutorService.submit()'](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html#submit (java.util.concurrent.Callable))を 'Callable'で置き換えてください。そのため、それらのドキュメントや関連するクラス/メソッドに焦点を当ててください。 'submit()'は、結果が利用可能になったときに何か(UIの更新など)をさせる 'Future 'を返すべきです。 –
millimoose