Če je vaša koda v procesu, kjer teče več niti hkrati, lahko teče koda hkrati. Če je rezultat vsakega zagona enak kot rezultat posamezne niti in so vrednosti drugih spremenljivk enake pričakovanim, je to varno za nit. Z drugimi besedami, vmesnik, ki ga zagotavlja razred ali program, je atomski za niti ali pa preklapljanje med več nitmi ne povzroča dvoumnosti v izvedbi vmesnika, kar pomeni, da ni treba upoštevati sinhronizacije. Težave z varnostjo niti povzročajo tako globalne kot statične spremenljivke. Če ima vsaka nit le operacije branja za globalne in statične spremenljivke, vendar brez operacij pisanja, je ta globalna spremenljivka na splošno varna za niti (thread-safe); Če več niti hkrati izvaja operacije branja in pisanja na spremenljivki, je običajno potrebna sinhronizacija niti, sicer lahko vpliva na varnost niti.
Namen zaklepanja je preprečiti sočasne operacije pri večnitnem izvajanju, objekti referenčnega tipa zaklepa pa omogočajo, da v svojem zaklenjenem območju hkrati deluje le ena nit.
Lock lahko zaklene le eno referenčno tip spremenljivke, torej zaklene naslov
Obstaja razlika med rezultati teka z zaklepanjem in brez njega:
Po zaklepanju: vrednost i se bo zniževala eno za drugo, ne bo preskokov, ne bo ponavljajočih se izhodov, dokler ne doseže vrednosti 0;
Brez zaklepanja: izhodna vrednost i bo skakala, diskontinuirana padajoča in lahko ima tudi izhod vrednosti -1;
Razlog: Po dodajanju zaklepa lahko kodo v zaklenjenem območju hkrati izvaja le ena nit, obe niti pa se izvajata v zaporedju, zato ne bo prekinjenega izhoda. |