Sobes.tech
Junior — Middle

Ինչպե՞ս իրականացնել բազմապտույտություն մեծ ծավալի առաջադրանքների, օրինակ՝ 10 000 առաջադրանքների, մշակման համար։

sobes.tech AI

Պատասխան AI-ից

Java-ով մեծ ծավալի առաջադրանքների (օրինակ՝ 10,000 առաջադրանք) արդյունավետ մշակման համար խորհուրդ է տրվում օգտագործել java.util.concurrent-ից թելային պուլ։

Հիմնական քայլեր՝

  1. Ստեղծել ExecutorService՝ ֆիքսված կամ դինամիկ չափով պուլով։
  2. Ուղարկել առաջադրանքները կատարման համար submit() կամ execute()-ի միջոցով։
  3. Հետո սպասել բոլոր առաջադրանքների ավարտին և ճիշտ փակել պուլը։

Օրինակ՝

import java.util.concurrent.*;

public class TaskProcessor {
    public static void main(String[] args) throws InterruptedException {
        int numberOfTasks = 10000;
        int poolSize = Runtime.getRuntime().availableProcessors();

        ExecutorService executor = Executors.newFixedThreadPool(poolSize);

        for (int i = 0; i < numberOfTasks; i++) {
            final int taskId = i;
            executor.submit(() -> {
                // Առաջադրանքի մշակումը
                System.out.println("Մշակվում է առաջադրանք " + taskId);
                // ...
            });
        }

        executor.shutdown();
        executor.awaitTermination(1, TimeUnit.HOURS);
    }
}

Այս մոտեցումը թույլ է տալիս արդյունավետ օգտագործել CPU ռեսուրսները և կառավարել միաժամանակ կատարվող թելերի քանակը, կանխելով շատ թելերի ստեղծումը, ինչը կարող է հանգեցնել կատարողականության նվազման։