3

Runtime.execプロセスを返すコードを呼び出します。プロセスがまだ終了していない場合、入力ストリームからのデータの読み取りは意味がありません。だから私は追加しましたProcess.waitFor

呼び出しスレッド (プロセス/アクティビティ メソッド) はスリープしますか? または、CPUを消費しますか。

4

2 に答える 2

0

が適切に実装されている場合waitfor、プロセスが完了するまでブロックするシステム コールを使用するため、サイクルを消費することはありません。

于 2013-06-15T06:29:47.270 に答える
0

呼び出しスレッド (プロセス/アクティビティ メソッド) はスリープしますか? または、CPUを消費しますか。

スレッド スケジューラはProcess.waitFor()、プロセスが終了するまでスレッドの呼び出しを中断します。

CPU は消費されません。(または、厳密に言えば、スレッド自体によって CPU が消費されることはありません。スケジューラ、スレッドを「起動」する必要があるときに少量の CPU を消費する場合があり、理論的には CPU が他の方法で消費される可能性があります。 ... スレッド スケジューラと OS の実装によって異なります。)

waitfor が返されるまで、アクティビティも中断されますか?

waitForいいえ。ブロックされている/「スリープ状態」になっているのは、呼び出したスレッドだけです。アクティビティに他のスレッドがあると仮定すると、これによって直接影響を受けることはありません。

service と acitvity は同じ Android プロセスの一部であるためです。

それは関係ありません。「スリープ」するのは単一のスレッドです...アクティビティやサービス全体ではありません。

于 2013-06-15T07:02:48.053 に答える