メイン ユーザー スレッドがこのような別のスレッドで一連のメソッドを呼び出すときに何が起こっているのか、ちょっと混乱しています。
メインスレッドで:
otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
そしてcallMethod
、他のスレッドでは、次のようにソケットから書き込みおよび読み取りを行っています。
mmOutStream.write(buffer);
mmOutStream.flush();
while (!finished) {
if (mmInStream.available() > 0)
if ((char) (c = (byte) mmInStream.read()) != 'x') {
responseBuffer[responseBufferLen++] = c;
} else {
finished = true;
}
}
これは明らかにブロッキング シナリオですが、これらのメソッドが順番に呼び出されている間、メイン ユーザー スレッドはブロックされません。
つまり、すべてのボタンがまだ反応しているという意味でブロックされており、ユーザーは遅延なく画面を操作できます。それはどうしてですか?