Зачем использовать так много потоков, если вам все проще с помощью селектора и одного потока?
Если вы хотите использовать многопоточный подход к сетевому вводу / выводу, вам следует рассмотреть простые старые блокирующие сокеты.
Кстати, вы можете сделать все это с 3 селекторами: один принимает подключения, один читает и один пишет. Когда вы принимаете соединение, вы можете зарегистрировать канал с двумя другими селекторами с соответствующими интересами.
Конечно, когда вам нужно освободить канал, вы должны отменить SelectionKey от обоих селекторов (чтение и запись) или закрыть его.