ターゲット デバイス (スマートフォン) でスクリプトを実行し、while ループで stdout メッセージを待機しているメイン プログラムがあります。ただし、この特定のケースでは、stdout のハートビート メッセージの一部は、ほぼ 45 秒から 1 分間隔で配置される可能性があります。
何かのようなもの:
stream = device.runProgram(RESTORE_LOGS, new String[] {});
stream.flush();
String line = stream.readLine();
while (line.compareTo("") != 0) {
reporter.commentOnJob(jobId, line);
line = stream.readLine();
}
そのため、必要なスリープ ウィンドウで stdout から行を読み取った後、新しい割り込み可能なスレッドを開始できるようにしたいと考えています。新しい行を読み取れるようになったら、中断/停止(プロセスの強制終了に問題がある)、標準出力テキストの改行を処理してプロセスを再起動できるようにしたいと考えています。
そして、タイマー ウィンドウ (たとえば 45 秒) 内で行を読み取ることができないイベントが発生した場合、while ループから抜け出す方法も必要です。
私はすでにthread.run、thread.interruptアプローチを試しました。しかし、新しいスレッドを強制終了して開始するのに問題があります。
これが最善の方法ですか、それとも明らかな何かが欠けていますか?