/
javapractice
/
JavaPractice
Обзор
Документация
Войти
/
javapractice
/
JavaPractice
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
2
CI/CD
Аналитика
develop
part-06-advanced/chapter-18-multithreading/1.java
89 строк
3 KB
Кузьма Даждъбогин
TSKJVPRCTC5-6 JavaCore. Структура папок выровнить на readme.md и удаляю лишние ветки
17 фев 2026, 12:59
17 фев 2026, 12:59
3e73656
Код
Авторство
О чём код?
// Способ 1: Наследование от Thread java class MyThread extends Thread { public void run() { System.out.println("Поток выполняется: " + Thread.currentThread().getName()); } } // Использование MyThread thread = new MyThread(); thread.start(); // Способ 2: Реализация Runnable class MyRunnable implements Runnable { public void run() { System.out.println("Поток выполняется: " + Thread.currentThread().getName()); } } // Использование Thread thread = new Thread(new MyRunnable()); thread.start(); // Способ 3: Lambda (Java 8+) Thread thread = new Thread(() -> { System.out.println("Поток выполняется: " + Thread.currentThread().getName()); }); thread.start(); // Способ 3: Lambda (Java 8+) class Counter { private int count = 0; // Синхронизированный метод public synchronized void increment() { count++; } // Синхронизированный блок public void decrement() { synchronized(this) { count--; } } } //6. ExecutorService - управление пулами потоков // Создание пула потоков ExecutorService executor = Executors.newFixedThreadPool(4); // стандартная формула выбора колличества потоков = (количество процессоров * 2)-20% // Запуск задач for (int i = 0; i < 10; i++) { executor.submit(() -> { // выполнение задачи }); } executor.shutdown(); // Важно закрывать! ____________________________________ public class Airport { private final Object runway = new Object(); // ВПП - общий ресурс public void land(String flightName) { synchronized (runway) { // только один самолет на ВПП System.out.println(flightName + " начал посадку"); try { Thread.sleep(2000); } // имитация посадки catch (InterruptedException e) { } System.out.println(flightName + " завершил посадку"); } } public static void main(String[] args) { Airport airport = new Airport(); ExecutorService tower = Executors.newFixedThreadPool(3); // диспетчерская // Несколько самолетов одновременно хотят сесть for (int i = 1; i <= 5; i++) { String flight = "SU-" + i; tower.execute(() -> airport.land(flight)); } tower.shutdown(); } } ____________________________________________