Proporcionar condición de límite en la generación de Stream [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Limitar una secuencia por un predicado 18 respuestas

Estoy escribiendo un código para calcular los números de Fibonacci. Con este código puedo generar los primeros n números de la secuencia de Fibonacci.

Stream.generate(new Supplier<Long>() {
    private long n1 = 1;
    private long n2 = 2;

    @Override
    public Long get() {
        long fibonacci = n1;
        long n3 = n2 + n1;
        n1 = n2;
        n2 = n3;
        return fibonacci;
    }
}).limit(50).forEach(System.out::println);

El métodolimit devuelve elStream que contiene el número de elementos pasados a este método. Quiero detener la generación delStream después de que el número de Fibonacci alcanzara algún valor.

Quiero decir, si quiero enumerar todos los números de Fibonacci menores de 1000, entonces no puedo usarlimit, porque no sé cuántos números de Fibonacci podría haber.

¿Hay alguna manera de hacer esto usando expresiones lambda?

Respuestas a la pregunta(3)

Su respuesta a la pregunta