Проблема с неблокирующими записями заключается в том, что вам может быть нечего делать, если запись не завершена. Вы можете получить такие петли, как
// non-blocking write
while(bb.remaining() > 0) sc.write(bb);
OR
// blocking write
sc.write(bb);
Первый может сжечь процессор, а второй может быть более желательным.
Большая проблема - чтение. Как только вы решите, хотите ли вы блокирующее или неблокирующее чтение, ваши записи должны быть одинаковыми. К сожалению, нет никакого способа сделать их другими. Если вы хотите неблокирующее чтение, вы должны иметь неблокирующее чтение.