Como criar tarefas concorrentes no Java, feito por quem se preocupa com os recursos e performance
Este post nasce de uma preocupação que tenho levado cada vez mais a sério: entender como cada parte do código realmente impacta o uso de recursos. Também tenho usado IA como ferramenta de estudo, principalmente para conseguir acompanhar tanta coisa nova sendo lançada sem perder o foco no que realmente quero aprender. Este e outros textos que venho escrevendo também servem como um compromisso…
No post, o autor fala sobre a importância de compreender como cada parte do código impacta o uso de recursos e performance. Ele discute o projeto Loom no Java, que introduziu threads controladas pela JVM que são muito mais leves do que as threads tradicionais, permitindo que threads não precisem passar o controle para o kernel durante IO e que possam dormir esperando pela resposta de um socket de rede.
O autor também explora a dificuldade de criar vínculos de tarefas paralelas no Java e a necessidade de cancelar e parar tarefas sem sobrecarregar recursos ou segurar recursos desnecessários. Ele apresenta o cenário de autorização de cartão, onde é necessário executar várias tarefas em paralelo e garantir que todas sejam bem-sucedidas ou nenhuma seja.
Para resolver esse problema, o autor apresenta a StructuredTaskScope, que traz o parentesco necessário para que as tarefas sejam executadas de forma coordenada. Ao usar StructuredTaskScope, você pode garantir que se uma tarefa falhar, as outras tarefas serão interrompidas sem a necessidade de polling e espera. Além disso, o try-with-resources já resolvia o problema de recursos para o Java, e a StructuredTaskScope oferece essa mesma funcionalidade para tarefas.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.