1/5 🧵 Essa semana peguei um bug interessante! 😱 Ele me fez lembrar que lambdas no Java são executados de forma "lazy". Vamos ver o exemplo... #Java #lambdas #bolhaDev
Comments
Log in with your Bluesky account to leave a comment
Se não me engano esse comportamento ocorre devido ao collect ser uma operação terminal, sendo executado imediatamente ao ser chamado. Uma alternativa seria salvar o retorno do map em um Stream e então realizar a chamada do método .collect dentro do Suppiler, não que isso mude muita coisa 😅
2/5 🧵 Exemplo errado: Se você processa um Stream fora de um Supplier, ele será executado antes do lock. Resultado? O stream rodou fora do bloco de lock. Cuidado! 😬
Comments
Resultado: O stream rodou antes do lock! 😬
methodThatRequiresSupplier(https://numbers.map(...)::toList)
obs: "toList" entrou em alguma versão mais ou menos recente aí, 16 ou 17 talvez