Cuprins:
Definiție - Ce înseamnă Sincronizarea firelor?
Sincronizarea firelor este executarea simultană a două sau mai multe fire care partajează resurse critice. Firele trebuie sincronizate pentru a evita conflictele critice de utilizare a resurselor. În caz contrar, pot apărea conflicte atunci când firele care rulează paralel încearcă să modifice o variabilă comună în același timp.
Techopedia explică Sincronizarea firelor
Pentru a clarifica sincronizarea firului, luați în considerare următorul exemplu: trei fire - A, B și C - sunt executate concomitent și trebuie să acceseze o resursă critică, Z. Pentru a evita conflictele atunci când accesați Z, firele A, B și C trebuie să fie sincronizate . Astfel, atunci când A accesează Z, iar B încearcă să acceseze și Z, accesul lui B la Z trebuie evitat cu măsuri de securitate până când A își termină funcționarea și iese din Z.
În Java, două strategii de sincronizare sunt utilizate pentru a preveni interferența thread-ului și erorile de consistență a memoriei:
- Metoda sincronizată: include cuvântul cheie sincronizat în declarația sa. Când un thread invocă o metodă sincronizată, metoda sincronizată achiziționează automat blocarea intrinsecă pentru obiectul acelei metode și o eliberează atunci când metoda se întoarce, chiar dacă acea returnare a fost cauzată de o excepție neatinsă.
- Declarație sincronizată: Declarează sincronizarea unui bloc de cod. Spre deosebire de metodele sincronizate, instrucțiunile sincronizate ar trebui să specifice obiectele care asigură blocarea intrinsecă. Aceste declarații sunt utile pentru îmbunătățirea concurentei cu sincronizarea cu granulație fină, deoarece permit evitarea blocării inutile.
