Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Завдання: Семафор | Механізми Синхронізації Високого Рівня
Багатопотоковість у Java

bookЗавдання: Семафор

Завдання

Уявіть, що у вас є ресурс, до якого можуть одночасно звертатися лише два потоки. Ваше завдання — створити програму, яка використовує semaphore для контролю доступу до цього ресурсу.

Умови:

  1. Є клас Resource з методом use(), який імітує використання ресурсу, наприклад, виводить повідомлення та створює затримку;
  2. Є клас Worker, який реалізує інтерфейс Runnable; у його методі run() буде спроба доступу до ресурсу з використанням semaphore;
  3. У класі SemaphoreExample є метод main(), який ініціалізує semaphore з дозволом для двох потоків, а також створює декілька потоків-робітників, які намагатимуться отримати доступ до ресурсу;
  4. Забезпечити, щоб не більше двох потоків одночасно використовували ресурс.
Note
Примітка

Будь ласка, нічого не змінюйте! Потрібно реалізувати лише метод run() у класі Worker, а також реалізувати логіку у методі use() класу Resource.

Як повинна працювати програма?

Є 5 потоків, які бажають одночасно виконати метод use(), але за допомогою Semaphore потрібно обмежити одночасне виконання до 2 потоків. Щойно потік звільняє Semaphore, інший потік може почати виконання цього методу. Для кращої наочності в цьому сценарії рекомендується додати затримку всередині методу use().

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

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

bookЗавдання: Семафор

Свайпніть щоб показати меню

Завдання

Уявіть, що у вас є ресурс, до якого можуть одночасно звертатися лише два потоки. Ваше завдання — створити програму, яка використовує semaphore для контролю доступу до цього ресурсу.

Умови:

  1. Є клас Resource з методом use(), який імітує використання ресурсу, наприклад, виводить повідомлення та створює затримку;
  2. Є клас Worker, який реалізує інтерфейс Runnable; у його методі run() буде спроба доступу до ресурсу з використанням semaphore;
  3. У класі SemaphoreExample є метод main(), який ініціалізує semaphore з дозволом для двох потоків, а також створює декілька потоків-робітників, які намагатимуться отримати доступ до ресурсу;
  4. Забезпечити, щоб не більше двох потоків одночасно використовували ресурс.
Note
Примітка

Будь ласка, нічого не змінюйте! Потрібно реалізувати лише метод run() у класі Worker, а також реалізувати логіку у методі use() класу Resource.

Як повинна працювати програма?

Є 5 потоків, які бажають одночасно виконати метод use(), але за допомогою Semaphore потрібно обмежити одночасне виконання до 2 потоків. Щойно потік звільняє Semaphore, інший потік може почати виконання цього методу. Для кращої наочності в цьому сценарії рекомендується додати затримку всередині методу use().

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4
some-alt