達成したいことを理解するのに少し時間がかかりましたが、ここに私の提案があり
ます-A.コードスニペットを別のスレッドで実行します。たとえば、Runnableの実装は次のようになります
。publicclass ProcessExecutorimplements Runnable {
プライベート文字列コマンド。
public ProcessExecutor(String command){this.command = command; }
public void run(){ランタイムruntime = RUntime.getRuntime(); プロセスprocess=runtime.exec(command); ProcessManager.getInstance()。add(process); process.waitFor(); }}
ProcessManagerは、開発するプロセスの実行を追跡するための同期されたシングルトーンコレクションです。
これは、プロセスIDに基づくマップであり、プロセス自体、および開始時刻と最終チェック時刻に関する情報を値として保持します。実行されたプロセスのステータスを定期的にチェックするスケジュールされたタスクを実行するには、 ScheduledExecutorService
を
使用する必要があります。プロセスごとに、最後のチェック時間を管理できます。lastCheckTime-startTimeが特定の間隔を超える場合は、エラーがあることを示し、destroyメソッドを使用してプロセスを破棄する必要があります。