избежать блокирования потока?
Java.nio, но под него над довольно сильно логику менять
по одному байтику писать / читать в flow не вариант ?
Где оно неблокирующее?
нет ну оно блокирущее, но там блокируется только на один байт flow { stream.readByte() }.toList() но я не спорю, что это какая-то фигня, мне просто интересно.
Короче, по одному байту читать - самый худший вариант
Смотря сколько у вас этого самого IO. Если один-два дескриптора, то nio - оверкилл, достаточно в Dispatchers.IO вынести ввод-вывод. Если много - то nio/nio2
Вполне возможно оверкилл Но мне интересно разобраться, чтобы знать что к чему в будущем
Примерно так: nio на коллбэках. JVM под капотом держит небольшой тредпул, который возится с ожиданием файлов/сети и дёргает ваши коллбэки. nio2 - через polling, вы сами рулите тредами, которые подёргивают JVM за селекторы на тему "ну чо там, прочиталося уже? а теперь? а щас? а ещё нет?" - по идее лучше ложится на корутины, но в рукопашную это всё писать, наверное, не стоит
Обсуждают сегодня