フロントエンドで Java を実行し、バックエンドでシェルスクリプトを実行する Web アプリケーションを開発しています。アプリケーションは主に多くのファイルの分析に関するものであり、Java プログラムはユーザーから、どのファイルをどの日付からどの日付まで分析するかなどの入力を取得します。ユーザーが 7 月 1 日から 8 日までのデータを提供すると仮定します。8 日間のファイルを処理する必要があります。毎日、約 100 個のファイルを処理する必要があります。したがって、私の目標は、このプロセスを順次行うのではなく、並行して行うことです。これに関して、私は基本的に2つの考えを持っています。私はこれをあなたと共有し、あなたの提案を得たいと思っていました.
プラン 1: プロセス ビルダーを使用してシェル スクリプトを呼び出す Java プログラム (ビジネス レイヤー) があります。ユーザーが指定した日付を分割できますか。たとえば、(1-8) を 4 つのスレッドに分割し、各スレッドが 2 日間の操作を実行することはできますか? (1-2) スレッド 1 と (3-4) スレッド 2 のように続きます。このアプローチに従う場合、すべての長所と短所は何ですか。また、このアプローチによってスレッド間をどのように調整するか。
プラン 2: Java からシェル スクリプトを呼び出し、シェル スクリプト内で複数のプロセスを生成します。前述のように、プロセス 1 を生成して日付 (1-2) とプロセス 2 (3-4) のジョブを実行できます。の上。このアプローチのすべての長所と短所は何ですか。そして、処理された出力を単一のファイルに書き込んでいます。したがって、複数のプロセスがある場合、単一のファイルを複数のプロセスで更新するにはどうすればよいですか。
また、私の質問に関連するリンクの参照
重要: シェル スクリプト内で毎日何百ものログ ファイルを処理する必要があることを説明しましたが、私の要件の 1 つは、シェル スクリプト内のジョブのステータスに関してフロント エンド環境を常に更新することです (つまり、1 日目が完了しました)。 、2日目は完了など。シェル スクリプトから echo を実行して、Java から値を取得できることはわかっています。しかし問題は、ファイルを処理するループ内でシェル スクリプト内でエコーを実行すると、コールが終了し、Java からコールバックする必要があることです。この更新を実現する方法についてのアイデア。