-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

6

不在线程上调用方法。它们被调用对象(或类,用于静态方法)。一个对象可以是 type Thread,但是在一个 type 的对象上Thread调用一个方法与在任何其他类型的对象上调用一个方法是完全一样的。该方法仍然由当前线程执行。

于 2013-03-07T22:57:42.640 回答
2

线程没有方法。类有方法和实例。代码通过对象调用实例方法。这一切都在当前线程中执行。对象是线程这一事实没有任何区别。

于 2013-03-07T22:58:15.503 回答