Sobes.tech
Junior — Middle

Kuidas tagada turvalisus mitme niidiga operatsioon?

sobes.tech AI

Vastus AI-lt

Tagam tagad Java-s töötavate mitme niidiga operatsioonide turvalisuse tagamiseks on vaja vältida võistlusolukordi ja tagada õige juurdepääs ühistele ressurssidele.

Peamised lähenemised:

  • Sünkroniseerimine (synchronized) — kriitiliste koodilõikude lukustamine, et ainult üks niit saaks neid korraga täita.

  • Kasutades java.util.concurrent klasside, näiteks, ReentrantLock, Semaphore, ConcurrentHashMap.

  • Muutumatud objektid — kui andmed on muutumatud, saab neid turvaliselt kasutada erinevatest niitidest.

  • Volatile muutujad — tagavad muutuste nähtavuse muutujas niitide vahel.

Näide synchronized-iga:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

See lähenemine takistab count muutujat samaaegselt mitme niidiga muudetamast ning tagab andmete turvalisuse.