17

複数の Java スレッドが同じ Socket インスタンスに同時に書き込みを行っている場合、同じソケットから読み取られるオブジェクトの整合性に影響しますか? つまり、オブジェクトの内容がめちゃくちゃになるかどうかなどです。オブジェクトの順序がランダムであることは問題ありません。

4

2 に答える 2

16

一般的に、保証はありません。さまざまなオブジェクトのビットがネットワーク上でインターリーブされ、結果が判読不能になる可能性があります。したがって、外部同期を提供する必要があります。

OS レベルでの単一のソケット書き込みでさえ、必ずしもアトミックではないことに注意してください。詳細については、複数のスレッドから同じ TCP ソケットでブロッキング write() 呼び出しを発行しても安全ですか? を参照してください。関数の sendmsg() ファミリーには注意してください。

于 2012-11-24T21:03:18.933 に答える
5

複数の Java スレッドが同じ Socket インスタンスに同時に書き込みを行っている場合

OutputStream複数のスレッドから同じものに書き込むことになります。
同期なしで良いと思う理由は何ですか? 同期せずに複数のスレッドから同時にファイルへの書き込みを開始した場合、ファイルには意味のあるものが含まれていると思いますか?

于 2012-11-24T21:21:11.403 に答える