SocketのInputStream、OutputStreamはスレッドセーフでしょうか?
SocketのInputStream、OutputStreamはスレッドセーフでしょうか?
以下のようなコードで、ソケットの送信処理(outputStram.writeメソッド)は、複数のスレッドから呼び出す場合は、排他制御が必要でしょうか?
例えばスレッドAでメッセージを返信しているときに、
何かしらの理由で、スレッドBがエラーメッセージを返信し、outputStreamをクローズしてもよいものでしょうか?
(クローズした場合、スレッドAの送信処理は中断されるのでしょうか。)
・スレッドAの処理
ServerSocket serverSocket = new ServerSocket(0);
Socket socket = serverSocket.accept(); // ブロッキングされる(クライアントからの通信開始要求が来るまで待機)
OutputStream outputStream = new BufferedOutputStream(socket.getOutputStream());
outputStream.write(送信データ);
・スレッドBの処理
outputStream.write(エラーメッセージ);
outputStream.close();
outputStream = null;
よろしくお願いします。