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

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

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