Definição – o que significa a sincronização de threads?
A sincronização de threads é a execução simultânea de duas ou mais threads que compartilham recursos críticos. Threads devem ser sincronizados para evitar conflitos críticos de uso de recursos. Caso contrário, podem surgir conflitos quando threads em execução paralela tentam modificar uma variável comum ao mesmo tempo.
Definirtec explica a sincronização de threads
Para esclarecer a sincronização de thread, considere o seguinte exemplo: três threads – A, B e C – são executados simultaneamente e precisam acessar um recurso crítico, Z. Para evitar conflitos ao acessar Z, os threads A, B e C devem ser sincronizados . Assim, quando A acessa Z, e B também tenta acessar Z, o acesso de B a Z deve ser evitado com medidas de segurança até que A termine sua operação e saia de Z.
Em Java, duas estratégias de sincronização são usadas para evitar interferência de thread e erros de consistência de memória:
- Método sincronizado: Inclui a palavra-chave synchronized em sua declaração. Quando um thread invoca um método synchronized, o método synchronized adquire automaticamente o bloqueio intrínseco para o objeto do método e o libera quando o método retorna, mesmo se esse retorno foi causado por uma exceção não capturada.
- Instrução sincronizada: declara um bloco de código a ser sincronizado. Ao contrário dos métodos sincronizados, as instruções sincronizadas devem especificar os objetos que fornecem o bloqueio intrínseco. Essas instruções são úteis para melhorar a simultaneidade com sincronização refinada, pois permitem evitar bloqueios desnecessários.