Sobes.tech
Junior — Middle

Чӣ гуна усулҳо метавонанд дастрасии бехатар ба як объект ё майдони он аз ҷониби чандирҳои зиёд дар як вақт таъмин кунанд?

sobes.tech AI

Ҷавоб аз AI

Για να διασφαλίσετε ασφαλή πρόσβαση σε ένα αντικείμενο ή το πεδίο του από πολλαπλά νήματα στην Java, χρησιμοποιούνται διάφορες μέθοδοι συγχρονισμού:

  • Λέξη-κλειδί synchronized — μπορείτε να συγχρονίσετε μεθόδους ή μπλοκ κώδικα ώστε μόνο ένα νήμα να τα εκτελεί ταυτόχρονα.

  • Κλάσεις από το πακέτο java.util.concurrent, π.χ., ReentrantLock — πιο ευέλικτος μηχανισμός κλειδώματος.

  • Πεδία Volatile — διασφαλίζουν τη ορατότητα των αλλαγών στη μεταβλητή μεταξύ νημάτων, αλλά δεν διασφαλίζουν την ατομικότητα πολύπλοκων λειτουργιών.

  • Ατομικές κλάσεις (AtomicInteger, AtomicReference κ.ά.) — παρέχουν ατομικές λειτουργίες χωρίς κλειδώματα.

  • Αμετάβλητα αντικείμενα — αν ένα αντικείμενο είναι αμετάβλητο, είναι ασφαλές για πρόσβαση από πολλά νήματα χωρίς συγχρονισμό.

Παράδειγμα με synchronized:

public class Counter {
    private int count = 0;

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

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

Αυτή η προσέγγιση διασφαλίζει ότι οι λειτουργίες πάνω στο count θα είναι ατομικές και ασφαλείς για νήματα.