Завдання: Семафор
Завдання
Уявіть, що у вас є ресурс, до якого можуть одночасно звертатися лише два потоки. Ваше завдання — створити програму, яка використовує semaphore для контролю доступу до цього ресурсу.
Умови:
- Є клас
Resourceз методомuse(), який імітує використання ресурсу, наприклад, виводить повідомлення та створює затримку; - Є клас
Worker, який реалізує інтерфейсRunnable; у його методіrun()буде спроба доступу до ресурсу з використаннямsemaphore; - У класі
SemaphoreExampleє методmain(), який ініціалізуєsemaphoreз дозволом для двох потоків, а також створює декілька потоків-робітників, які намагатимуться отримати доступ до ресурсу; - Забезпечити, щоб не більше двох потоків одночасно використовували ресурс.
Будь ласка, нічого не змінюйте! Потрібно реалізувати лише метод run() у класі Worker, а також реалізувати логіку у методі use() класу Resource.
Як повинна працювати програма?
Є 5 потоків, які бажають одночасно виконати метод use(), але за допомогою Semaphore потрібно обмежити одночасне виконання до 2 потоків. Щойно потік звільняє Semaphore, інший потік може почати виконання цього методу. Для кращої наочності в цьому сценарії рекомендується додати затримку всередині методу use().
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain how a semaphore works in this context?
What would the output look like when running this program?
Can you show how to implement the Resource and Worker classes?
Awesome!
Completion rate improved to 3.33
Завдання: Семафор
Свайпніть щоб показати меню
Завдання
Уявіть, що у вас є ресурс, до якого можуть одночасно звертатися лише два потоки. Ваше завдання — створити програму, яка використовує semaphore для контролю доступу до цього ресурсу.
Умови:
- Є клас
Resourceз методомuse(), який імітує використання ресурсу, наприклад, виводить повідомлення та створює затримку; - Є клас
Worker, який реалізує інтерфейсRunnable; у його методіrun()буде спроба доступу до ресурсу з використаннямsemaphore; - У класі
SemaphoreExampleє методmain(), який ініціалізуєsemaphoreз дозволом для двох потоків, а також створює декілька потоків-робітників, які намагатимуться отримати доступ до ресурсу; - Забезпечити, щоб не більше двох потоків одночасно використовували ресурс.
Будь ласка, нічого не змінюйте! Потрібно реалізувати лише метод run() у класі Worker, а також реалізувати логіку у методі use() класу Resource.
Як повинна працювати програма?
Є 5 потоків, які бажають одночасно виконати метод use(), але за допомогою Semaphore потрібно обмежити одночасне виконання до 2 потоків. Щойно потік звільняє Semaphore, інший потік може почати виконання цього методу. Для кращої наочності в цьому сценарії рекомендується додати затримку всередині методу use().
Дякуємо за ваш відгук!