0

重複の可能性:
この同期のポイントは何ですか?

BluetoothChatサンプルアプリケーションを使用してBluetooth接続を確立していますが、218行目で本当に困っていることがあります。

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

ConnectedThreadインスタンスのローカルコピーを同期する必要があるのに、write関数を同期しないのはなぜですか(ConnectedThread上記のメソッド内またはメソッド内の場合)。write異なるスレッドから同時に複数回呼び出すことは可能だと思いますが、インスタンスのコピーではなく、メソッドが同期されるのを常に見ています。

4

1 に答える 1

0

Synchronizeは読み取りと更新の両方に使用する必要がありますConnectedThreadmState

于 2012-09-05T10:08:48.487 に答える