Fornecendo condição de limite na geração de fluxo [duplicado]

Esta pergunta já tem uma resposta aqui:

Limitar um fluxo por um predicado 18 respostas

Estou escrevendo um código para calcular números de Fibonacci. Com esse código, posso gerar os primeiros n números da sequência 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);

O métodolimit retorna oStream que mantém o número de elementos passados para esse método. Eu quero parar a geração doStream depois que o número de Fibonacci atingiu algum valor.

Quero dizer, se eu quiser listar todos os números de Fibonacci menores que 1000, não posso usarlimit, porque não sei quantos números de Fibonacci poderiam existir.

Existe alguma maneira de fazer isso usando expressões lambda?

questionAnswers(4)

yourAnswerToTheQuestion