これは基本的な質問である場合私の無知を許してください。バックグラウンド処理java
モジュールから制御を戻してバックグラウンドで処理を開始するにはどうすればいいですか?
コンポーネントAはコンポーネントBを呼び出します。コンポーネントBは基本的な処理を行い、バックグラウンドスレッドを開始し、すぐに制御をAに返します。バックグラウンドスレッドが処理を完了するたびに、結果を永続ストアに保存します。このバックグラウンドスレッドによる全体の処理は時間がかかり、バックグラウンドスレッドが終了するまで待つことはできません。
Component A {
Http Call component B
}
Component B {
// Got request from component A
start background thread();
return; // don't wait till background thread finishes off
}
background thread() {
// time consuming task
}
どのようにしてこの動作をJavaで達成できますか?私は、通信がタイムアウト設定を持つHTTP接続上で起こっているので、それが完全に非同期の処理形式ではないとは思わない。
更新:
Component A:
Receives Http call
Component B:
Approach1:
Runnable runnable = new MyThread();
new Thread(runnable).start();
Approach2:
ExecutorService exec = Executors.newSingleThreadExecutor();
exec.execute(new MyThread());
exec.shutdown();
上記のアプローチの両方がバックグラウンド処理が完了する前に、HTTP呼び出しを返すようにしたいと仮定すると、バックグラウンド処理を開始し、A.
あなたは並行性ユーティリティを見ましたか?そうでない場合は、ここをクリックしてください。https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html – Bajal