Sobes.tech
Junior — Middle

შეგიძლიათ დაასახელოთ java.util.concurrent პაკეტში მოცემული ძირითადი primitives და ინსტრუმენტები მრავალმხრივი შესრულების ორგანიზებისთვის?

sobes.tech AI

პასუხი AI-სგან

java.util.concurrent პაკეტში არსებობს რამდენიმე ძირითადი primitive და ინსტრუმენტი მრავალთრაქტული შესრულების ორგანიზებისთვის:

  • Executor და ExecutorService — ინტერფეისები თრედების პულის მართვის და ასინქრონული დავალებების შესრულებისთვის.
  • Future და CompletableFuture — ასინქრონული გამოთვლების შედეგის მიღებისთვის.
  • CountDownLatch — საშუალებას აძლევს ერთ ან რამდენიმე თრედს დაელოდოს, სანამ სხვა თრედებიCertain actions are completed.
  • CyclicBarrier — სინქრონიზირებს რამდენიმე თრედს, აიძულებს მათ ერთმანეთს დაელოდონ.
  • Semaphore — შეზღუდავს ერთდროულად წვდომის რაოდენობას რესურსზე.
  • ReentrantLock — მოწინავე ლოკირების მექანიზმი, რომელიც საშუალებას აძლევს სცადოს და აქვს დროის შეზღუდვა.
  • კონკურენტული კოლექციები (მაგ., ConcurrentHashMap, CopyOnWriteArrayList) — თრედ-უსაფრთხო კოლექციები.
  • ატომური ცვლადები (AtomicInteger, AtomicLong და სხვა) — ოპერაციები ცვლადებზე, რომლებიც არ საჭიროებს ლოკებს.

ExecutorService-ის გამოყენების მაგალითი:

ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> {
    System.out.println("Աշխատանքը կատարվում է առանձին թելում");
});
executor.shutdown();