Клиент устанавливает соединение с сервером и не разрывает после каждой отправки сообщения 2 потока: Отправитель Получатель
Message implements Serializable (отправитель (String), текст, дата)
Сервер на каждое подключение выделяется отдельный поток, который принимает сообщения от клиента и добавляет их блокирующую очередь
плюс один поток - отправитель: забирает сообщение из блокирующей очереди и рассылает сообщения всем клиентам, кроме отправителя
connections[con1, con2, con3] messages[mes1, mes2, mes3, mes4]