-
Métodos synchronized: São uma maneira eficaz de obter sincronização em classes criadas por nós.
-
Limitação: Não funcionam quando queremos sincronizar métodos de classes de terceiros, sem acesso ao código-fonte.
-
Problema: Não é possível adicionar o modificador synchronized diretamente em métodos dessas classes.
-
Solução: Usar blocos synchronized para envolver as chamadas aos métodos da classe desejada.
synchronized(refobj) {
// instruções a serem sincronizadas
}
-
refobj: Referência ao objeto que está sendo sincronizado.
-
Bloco sincronizado: Garante que nenhuma outra thread chame métodos sincronizados no objeto até o bloco ser finalizado.
-
Exemplo: É possível sincronizar chamadas ao método
sumArray()
envolvendo-as em um blocosynchronized
.
Source link
lol