Насколько понимаю, архитектуру сервера можно описать примерно так: сервер "ловит" (или читает") новый сокет; один сокет = одно соединение = одна нить для его обработки. Если сразу 2 уже авторизованных пользователя одновременно отправят сообщения на сервер, тогда для их обработки каждая нить вызовет метод сервера sendBroadcastMessage(). ВОПРОС: я правильно понимаю, что логично было бы сделать именно этот метод synchronized? Мы же сделали synchronized внутри методов send()(к которому, кстати, обращается sendBroadcastMessage) и receive() только потому, что сервер и пользователи сидят на одном компьютере, а не на реальном сервере?