Junior — Middle
Μπορείς να αναφέρεις τα βασικά primitives και εργαλεία που παρέχονται στο πακέτο java.util.concurrent για την οργάνωση πολυνηματικής εκτέλεσης;
sobes.tech AI
Απάντηση από AI
В пакете java.util.concurrent есть несколько ключевых примитивов и инструментов для организации многопоточного исполнения:
- Executor и ExecutorService — интерфейсы для управления пулом потоков и асинхронным выполнением задач.
- Future и CompletableFuture — для получения результата асинхронных вычислений.
- CountDownLatch — позволяет одному или нескольким потокам ждать, пока другие потоки выполнят определённые действия.
- CyclicBarrier — синхронизирует несколько потоков, заставляя их ждать друг друга.
- Semaphore — ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу.
- ReentrantLock — расширенный механизм блокировки с возможностью попытки захвата и таймаутом.
- Concurrent Collections (например, ConcurrentHashMap, CopyOnWriteArrayList) — потокобезопасные коллекции.
- Atomic Variables (AtomicInteger, AtomicLong и др.) — для атомарных операций над переменными без использования блокировок.
Пример использования ExecutorService:
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> {
System.out.println("Задача выполнена в отдельном потоке");
});
executor.shutdown();