这是我第一次参与基于蓝牙的Android应用程序并更好地了解它是如何工作的,我正在研究蓝牙的例子。
或多或少,我认为我理解一切,但我已经到了一点,我不能再进一步了
以这种方式写数据的原因是什么?
public void write(byte[] out) {
// Create temporary object
ConnectedThread r;
// Synchronize a copy of the ConnectedThread
synchronized (this) {
if (mState != STATE_CONNECTED) return;
r = mConnectedThread;
}
// Perform the write unsynchronized
r.write(out);
}
为什么不直接调用mConnectedThread.write(out)? 这个同步的目标是什么?
我理解(显然错误地)此代码仅在主线程上执行,在这种情况下,为什么我们需要这个互斥量?
感谢所有人。
P.S。:对不起我的英语不好!
答案 0 :(得分:0)
对于问题部分: 这个同步的目标是什么? - 目标似乎是以线程安全的方式访问mThread和mConnect变量(即没有变化正在访问其中一个变量)。此链接(以及其中的其他链接)将在Java Synchronization
上显示更多内容