Sobes.tech
Junior — Middle

Πώς υλοποιείται η καταμέτρηση των επεξεργασμένων εγγραφών κατά τη χρήση πολυνηματικής επεξεργασίας;

sobes.tech AI

Απάντηση από AI

Κατά τη χρήση πολυνηματικής επεξεργασίας για τον υπολογισμό των εγγραφών που έχουν επεξεργαστεί, είναι σημαντικό να διασφαλίζεται σωστή συγχρονισμένη πρόσβαση στον μετρητή για την αποφυγή συνθηκών αγώνα.

Ένας από τους πιο απλούς τρόπους είναι η χρήση ασφαλών για νήματα κλάσεων από το πακέτο java.util.concurrent.atomic, όπως το AtomicInteger:

import java.util.concurrent.atomic.AtomicInteger;

public class RecordProcessor {
    private AtomicInteger processedCount = new AtomicInteger(0);

    public void processRecord(Record record) {
        // επεξεργασία εγγραφής
        // ...

        // ασφαλής αύξηση του μετρητή
        processedCount.incrementAndGet();
    }

    public int getProcessedCount() {
        return processedCount.get();
    }
}

Εάν χρησιμοποιείται μια ομάδα νημάτων, κάθε νήμα καλεί το processRecord, και ο μετρητής θα αυξάνεται σωστά χωρίς αποκλεισμούς.

Εναλλακτικά, μπορούν να χρησιμοποιηθούν μπλοκ συγχρονισμού ή άλλα μηχανισμοί συγχρονισμού, αλλά το AtomicInteger είναι πιο απλό και αποδοτικό για τέτοιες εργασίες.