我有一个主程序,它在目标设备(智能手机)上运行脚本,并在等待标准输出消息的 while 循环中。然而,在这种特殊情况下,标准输出上的一些心跳消息可能相隔近 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();
}
所以,我希望能够在从标准输出读取行后启动一个新的可中断线程,并且需要一个睡眠窗口。在能够读取新行后,我希望能够中断/停止(无法终止进程),处理标准输出文本的换行并重新启动进程。
如果我无法在计时器窗口中读取一行(比如 45 秒),我也想找到一种方法来摆脱我的 while 循环。
我已经尝试过 thread.run,thread.interrupt 方法。但是在杀死和启动新线程时遇到了麻烦。
这是最好的出路还是我错过了一些明显的东西?