Não entendi muito bem a aula, ela tenta sincronizar no service sem usar thread explicitamente, então fiquei na duvida se o spring faz isso por padrão, paralelizar as requisições.
Não entendi muito bem a aula, ela tenta sincronizar no service sem usar thread explicitamente, então fiquei na duvida se o spring faz isso por padrão, paralelizar as requisições.
Olá, Bruno. Tudo bem?
O Spring, por padrão, não paraleliza requisições automaticamente. O comportamento padrão do Spring é tratar cada requisição de forma independente, sem paralelismo explícito a menos que você configure isso. No entanto, ele oferece várias ferramentas para gerenciar concorrência e paralelismo, como o uso de @Async
, ExecutorService
, ou mesmo o uso de synchronized
em métodos, como você viu no exemplo da aula.
No caso do exemplo que você mencionou, a aula está mostrando como simular requisições paralelas para testar o comportamento da aplicação quando múltiplas requisições tentam acessar o mesmo recurso simultaneamente. Isso é importante para identificar problemas de concorrência, como a tentativa de subtrair do estoque simultaneamente, o que pode levar a inconsistências.
Para tratar essas situações, o Spring oferece suporte a transações com a anotação @Transactional
, que ajuda a garantir que um bloco de código seja executado de forma atômica. Além disso, o uso de synchronized
em métodos pode ajudar a evitar que dois threads executem o método ao mesmo tempo, mas isso deve ser usado com cuidado, pois pode impactar a escalabilidade.
Se você está buscando implementar paralelismo, pode explorar o uso de @Async
para métodos assíncronos ou configurar um TaskExecutor
personalizado para controlar como as threads são gerenciadas.
Espero ter ajudado e bons estudos.