当主用户线程在另一个线程中调用一系列方法时,我有点困惑
在主线程中:
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;
}
}
这显然是一种阻塞方案 - 但是在按顺序调用这些方法时,主用户线程不会被阻止。
我的意思是阻止所有按钮仍然反应,用户可以毫不拖延地与屏幕交互。 怎么会这样?
答案 0 :(得分:6)
不会在线程上调用方法。它们被称为对象(或类,对于静态方法)。对象可以是Thread
类型,但是对类型为Thread
的对象调用方法与在任何其他类型的对象上调用方法完全相同。该方法仍由当前线程执行。
答案 1 :(得分:2)
线程没有方法。类有方法和实例。代码通过对象调用实例方法。它都在当前线程中执行。对象是一个线程的事实没有区别。