Sobes.tech
Junior — Middle

Kuidas rakendada mitmetöötlust suure ülesannete hulga, näiteks 10 000 ülesande, töötlemiseks?

sobes.tech AI

Vastus AI-lt

Selleks, et tõhusalt töödelda suurt ülesannete hulka (näiteks 10 000 ülesannet) Java-s, on soovitatav kasutada java.util.concurrent-i thread-pulka.

Peamised sammud:

  1. Loo ExecutorService fikseeritud või dünaamilise suurusega pulk.
  2. Saada ülesanded täitmiseks submit() või execute() abil.
  3. Oota, kuni kõik ülesanded on lõpetatud, ja sulge pult õigesti.

Näide:

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(() -> {
                // Ülesande töötlemine
                System.out.println("Töötlusel ülesanne " + taskId);
                // ...
            });
        }

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

See lähenemine võimaldab tõhusalt kasutada CPU ressursse ja hallata samaaegselt täidetavate threadide arvu, vältides liiga paljude threadide loomist, mis võib põhjustada jõudluse langust.