[на самом деле комментарий, но он не подходит;)]
Ответ maasg в общем смысле вполне корректен, но я полагаю, что вы сейчас смотрите на трудности проектирования, а не на реализацию многопоточной реализации Java.
Ваш сервер (как есть) запускает одноразовый поток при каждом запросе на подключение, и этот поток просто читает один объект с клиента и затем закрывает соединение.Переданный объект помещается в объектный объект (поток сервера) (который должным образом собирает мусор после выхода из run ()).
Это совершенно неясно - и, таким образом, создается впечатление, что это проблема проектирования.- как вы определяете, какие 2 потока сравнивать, или в этом отношении, что гарантирует, что у вас будет (всегда) 2 одновременных потока для начала.
Логически у вас явно есть какая-то специфическая для домена связь между серверным потоком и каким-то значимым вопросом в вашем домене.Эти отношения должны быть воплощены в коде, но сначала мы должны понять, что это за различие и отношение.