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-ը ավելի պարզ և արդյունավետ է նման առաջադրանքների համար։