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;

よろしくお願いします。