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

bookЗавдання: Lock і Condition

Опис завдання

Уявіть, що ви розробляєте контролер світлофора для жвавого перехрестя. Система світлофора складається з трьох етапів: червоне світло, жовте світло та зелене світло. Ці етапи мають виконуватися у певній послідовності для забезпечення безпеки та ефективного руху транспорту.

Ваше завдання — реалізувати методи: redLight(), yellowLight() та greenLight(). Ці методи повинні виконуватися суворо у порядку, як у справжньому світлофорі: спочатку червоне світло, потім жовте світло і нарешті зелене світло, незалежно від того, у якому порядку потоки викликають ці методи.

Вимоги:

  • Синхронізація: Гарантувати виконання методів у суворій послідовності;
  • Мультипотоковість: Методи можуть викликатися з різних потоків, але виконання має відбуватися у порядку: redLight(), yellowLight(), greenLight();
  • Використання Lock та Condition: Застосувати Lock для контролю доступу до спільних ресурсів і Condition для координації потоків.
Note
Примітка

Поле counter у класі TaskLockExample вказане не випадково, вам потрібно перевіряти його значення у кожному методі і залежно від того, що там знаходиться, вирішувати, чи запускати цей потік чи ні.

Також необхідно використовувати поля lock та condition для блокування певного потоку та визначення, хто буде першим, другим, третім.

Після реалізації методів і переходу до класу Main та запуску його головного методу, ви повинні отримати результат незалежно від того, в якому порядку і який потік викликає який метод.

Також виведіть щось у консоль, щоб перевірити, чи методи виконуються у правильному порядку.

Note
Примітка

Ви також можете поміняти місцями запуск потоків (не саму реалізацію, а саме місце, де викликається метод start() потоку)

Після того як ви впевнені, що все працює, запустіть тести перевірки за шляхом /src/test/java/TaskLockExampleTest.java.

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 3.33

bookЗавдання: Lock і Condition

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

Опис завдання

Уявіть, що ви розробляєте контролер світлофора для жвавого перехрестя. Система світлофора складається з трьох етапів: червоне світло, жовте світло та зелене світло. Ці етапи мають виконуватися у певній послідовності для забезпечення безпеки та ефективного руху транспорту.

Ваше завдання — реалізувати методи: redLight(), yellowLight() та greenLight(). Ці методи повинні виконуватися суворо у порядку, як у справжньому світлофорі: спочатку червоне світло, потім жовте світло і нарешті зелене світло, незалежно від того, у якому порядку потоки викликають ці методи.

Вимоги:

  • Синхронізація: Гарантувати виконання методів у суворій послідовності;
  • Мультипотоковість: Методи можуть викликатися з різних потоків, але виконання має відбуватися у порядку: redLight(), yellowLight(), greenLight();
  • Використання Lock та Condition: Застосувати Lock для контролю доступу до спільних ресурсів і Condition для координації потоків.
Note
Примітка

Поле counter у класі TaskLockExample вказане не випадково, вам потрібно перевіряти його значення у кожному методі і залежно від того, що там знаходиться, вирішувати, чи запускати цей потік чи ні.

Також необхідно використовувати поля lock та condition для блокування певного потоку та визначення, хто буде першим, другим, третім.

Після реалізації методів і переходу до класу Main та запуску його головного методу, ви повинні отримати результат незалежно від того, в якому порядку і який потік викликає який метод.

Також виведіть щось у консоль, щоб перевірити, чи методи виконуються у правильному порядку.

Note
Примітка

Ви також можете поміняти місцями запуск потоків (не саму реалізацію, а саме місце, де викликається метод start() потоку)

Після того як ви впевнені, що все працює, запустіть тести перевірки за шляхом /src/test/java/TaskLockExampleTest.java.

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

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

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

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