Теоретически, если достигнут конец потока, нет байтов для чтения и доступно возвращает 0. Но будьте осторожны с этим.Не все потоки обеспечивают реальную реализацию этого метода.Сам InputStream всегда возвращает 0.
Если вам нужна неблокирующая функциональность, т.е. чтение из потока без блокировки при чтении, используйте вместо этого NIO.