Завдання: Семафор
Свайпніть щоб показати меню
Завдання
Уявіть, що у вас є ресурс, до якого можуть одночасно звертатися лише два потоки. Ваше завдання — створити програму, яка використовує semaphore для контролю доступу до цього ресурсу.
Умови:
- Є клас
Resourceз методомuse(), який імітує використання ресурсу, наприклад, виводить повідомлення та створює затримку; - Є клас
Worker, який реалізує інтерфейсRunnable; у його методіrun()буде спроба доступу до ресурсу з використаннямsemaphore; - У класі
SemaphoreExampleє методmain(), який ініціалізуєsemaphoreз дозволом для двох потоків, а також створює декілька потоків-робітників, які намагатимуться отримати доступ до ресурсу; - Забезпечити, щоб не більше двох потоків одночасно використовували ресурс.
Будь ласка, нічого не змінюйте! Потрібно реалізувати лише метод run() у класі Worker, а також реалізувати логіку у методі use() класу Resource.
Як повинна працювати програма?
Є 5 потоків, які бажають одночасно виконати метод use(), але за допомогою Semaphore потрібно обмежити одночасне виконання до 2 потоків. Щойно потік звільняє Semaphore, інший потік може почати виконання цього методу. Для кращої наочності в цьому сценарії рекомендується додати затримку всередині методу use().
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат