Ja kods ir procesā, kurā vienlaikus darbojas vairāki pavedieni, iespējams, tas palaiž kodu vienlaikus. Ja katras palaišanas rezultāts ir tāds pats kā viena pavediena rezultāts un citu mainīgo vērtības ir tādas pašas, kā paredzēts, tas ir drošs. Citiem vārdiem sakot, klases vai programmas nodrošinātā saskarne ir atomu pavedieniem vai pārslēgšanās starp vairākiem pavedieniem nerada neskaidrības saskarnes izpildes rezultātā, kas nozīmē, ka mums nav jāapsver sinhronizācija. Vītņu drošības problēmas izraisa gan globālie, gan statiskie mainīgie. Ja katram pavedienam ir tikai globālo mainīgo un statisko mainīgo lasīšanas operācijas, bet nav rakstīšanas operāciju, parasti šis globālais mainīgais ir drošs; Ja vairāki pavedieni vienlaikus veic lasīšanas un rakstīšanas operācijas mainīgajam, parasti ir nepieciešama pavedienu sinhronizācija, pretējā gadījumā tā var ietekmēt pavedienu drošību.
Bloķēšanas mērķis ir novērst vienlaicīgas darbības, kad tiek izpildīta vairāku pavedienu, un bloķēšanas atsauces tipa objekti ļauj bloķētajā apgabalā vienlaikus darboties tikai vienam pavedienam.
Bloķēšana var bloķēt tikai vienu atsauces tipa mainīgo, tas ir, bloķēt adresi
Pastāv atšķirība starp skriešanas rezultātiem ar un bez bloķēšanas:
Pēc bloķēšanas: i vērtība samazināsies pa vienam, nebūs lēcienu, atkārtotas izvades līdz vērtībai 0;
Bez bloķēšanas: i vērtības izeja lēks, nepārtraukti samazināsies, un tai var būt arī -1 vērtības izeja;
Iemesls: Pēc slēdzenes pievienošanas tikai viens pavediens var izpildīt kodu bloķētajā apgabalā vienlaikus, un abi pavedieni tiek izpildīti secībā, tāpēc nebūs pārtraukta izvade. |