Bluetoothチャットの例を見ていますが、以下のコードでローカルのConnectedThreadオブジェクトのコピーに同期されている理由がわかりません。確かにrとmConnectedThreadは同じオブジェクトを指していますか?
public synchronized void write(byte[] out)
{
// Create temporary object
ConnectedThread r;
// Synchronize a copy of the ConnectedThread
synchronized (this)
{
if (mState != ICommsService.STATE_CONNECTED)
return;
r = mConnectedThread;
}
// Perform the write unsynchronized
r.write(out);
}