-4

メイン ユーザー スレッドがこのような別のスレッドで一連のメソッドを呼び出すときに何が起こっているのか、ちょっと混乱しています。

メインスレッドで:

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;
    }
}

これは明らかにブロッキング シナリオですが、これらのメソッドが順番に呼び出されている間、メイン ユーザー スレッドはブロックされません。

つまり、すべてのボタンがまだ反応しているという意味でブロックされており、ユーザーは遅延なく画面を操作できます。それはどうしてですか?

4

2 に答える 2

2

スレッドにはメソッドがありません。クラスにはメソッドとインスタンスがあります。コードは、オブジェクトを介してインスタンス メソッドを呼び出しています。すべて現在のスレッドで実行されます。オブジェクトがスレッドであるという事実は、違いはありません。

于 2013-03-07T22:58:15.503 に答える