Obsah:
Definícia - Čo znamená synchronizácia vlákien?
Synchronizácia vlákien je súbežné vykonanie dvoch alebo viacerých vlákien, ktoré zdieľajú kritické zdroje. Vlákna by sa mali synchronizovať, aby sa predišlo konfliktom pri kritickom používaní zdrojov. V opačnom prípade môžu nastať konflikty, keď sa paralelné vlákna budú snažiť modifikovať spoločnú premennú súčasne.
Techopedia vysvetľuje synchronizáciu vlákien
Aby sa objasnila synchronizácia vlákien, zvážte nasledujúci príklad: tri vlákna - A, B a C - sa vykonávajú súčasne a musia mať prístup k kritickému prostriedku, Z. Aby sa predišlo konfliktom pri prístupe k Z, vlákna A, B a C sa musia synchronizovať., Keď sa A snaží získať prístup k Z a B sa tiež pokúša o prístup k Z, je potrebné zabrániť bezpečnostným opatreniam prístup B k Z, až kým A nedokončí svoju činnosť a nevyjde z Z.
V Java sa používajú dve stratégie synchronizácie, aby sa zabránilo rušeniu vlákien a chybám konzistencie pamäte:
- Synchronizovaná metóda: Zahrne do svojho vyhlásenia synchronizované kľúčové slovo. Keď vlákno vyvolá synchronizovanú metódu, synchronizovaná metóda automaticky získa vnútorný zámok pre objekt tejto metódy a uvoľní ju, keď sa metóda vráti, aj keď bol tento návrat spôsobený neočakávanou výnimkou.
- Synchronizovaný príkaz: Vyhlási blok kódu, ktorý sa má synchronizovať. Na rozdiel od synchronizovaných metód by mali synchronizované príkazy špecifikovať objekty, ktoré poskytujú vlastný zámok. Tieto príkazy sú užitočné na zlepšenie súbežnosti s jemnozrnnou synchronizáciou, pretože umožňujú vyhnúť sa zbytočnému blokovaniu.