У меня есть два отдельных процесса Java, взаимодействующих через одно соединение TCP. Протокол не простой синхронный запрос / ответ, такой как HTTP. Обе стороны могут самостоятельно инициировать запросы и отправлять данные. Я хочу реализовать это, используя потоки и блокируя сокеты, избегая NIO. Но возможно ли это вообще?
Java-сокеты (java.net.Socket) не являются потокобезопасными, поэтому я не могу читать из сокета в одном потоке, одновременно записывая в него в другом потоке (Это правда?) Это ограничение, очевидно, приводит к возможности тупиковой ситуации, когда обе стороны блокируют запись в сокет.
Из этого следует, что некоторые протоколы поверх TCP не могут быть реализованы в Java без использования NIO, или я упускаю точку?
Спасибо.