Как клонировать входной поток в Java в минимальное время

Может кто-нибудь сказать мне, как клонировать входной поток, потратив как можно меньше времени на создание? Мне нужно несколько раз клонировать входной поток для нескольких методов обработки IS. Я'мы пробовали три способа и вещи неработать по той или иной причине.

Метод № 1: Благодаря сообществу stackoverflow я нашел следующую ссылку полезной и включил фрагмент кода в свою программу.

Как клонировать InputStream?

Однако использование этого кода может занять до одной минуты (для файла размером 10 МБ) для создания клонированных входных потоков, и моя программа должна быть максимально быстрой.

    int read = 0;
    byte[] bytes = new byte[1024*1024*2];

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    while ((read = is.read(bytes)) != -1)
        bos.write(bytes,0,read);
    byte[] ba = bos.toByteArray();

    InputStream is1 = new ByteArrayInputStream(ba);
    InputStream is2 = new ByteArrayInputStream(ba);
    InputStream is3 = new ByteArrayInputStream(ba);

Способ № 2: Я также попытался использовать BufferedInputStream для клонирования IS. Это было быстро (самое медленное время создания == 1 мс. Fasttest == 0 мс). Однако после того, как я отправил is1 для обработки, методы обработки is2 и is3 выдавали ошибку, сообщающую, что обрабатывать нечего, почти как все 3 переменные, указанные ниже, ссылаются на один и тот же IS.

    is = getFileFromBucket(path,filename);
    ...
    ...
    InputStream is1 = new BufferedInputStream(is);
    InputStream is2 = new BufferedInputStream(is);
    InputStream is3 = new BufferedInputStream(is);

Метод № 3: Я думаю, что компилятор мне врет. Я проверил markSupported () для is1 для двух приведенных выше примеров. Вернулось правда, поэтому я думал, что смогу бежать

    is1.mark() 
    is1.reset()

или просто

    is1.reset();

перед передачей IS в мои соответствующие методы. В обоих приведенных выше примерах я получаю сообщение об ошибке:Неверный знак

У меня нет идей, поэтому заранее спасибо за любую помощь, которую вы можете мне оказать.

Постскриптум Из комментариев яПолучив от людей, мне нужно прояснить пару моментов, касающихся моей ситуации: 1) Эта программа работает на ВМ. 2) Входной поток передается мне из другого метода. Я'm не читает из локального файла 3) Размер входного потока неизвестен