Завдання: Lock і Condition
Опис завдання
Уявіть, що ви розробляєте контролер світлофора для жвавого перехрестя. Система світлофора складається з трьох етапів: червоне світло, жовте світло та зелене світло. Ці етапи мають виконуватися у певній послідовності для забезпечення безпеки та ефективного руху транспорту.
Ваше завдання — реалізувати методи: redLight(), yellowLight() та greenLight(). Ці методи повинні виконуватися суворо у порядку, як у справжньому світлофорі: спочатку червоне світло, потім жовте світло і нарешті зелене світло, незалежно від того, у якому порядку потоки викликають ці методи.
Вимоги:
- Синхронізація: Гарантувати виконання методів у суворій послідовності;
- Мультипотоковість: Методи можуть викликатися з різних потоків, але виконання має відбуватися у порядку:
redLight(),yellowLight(),greenLight(); - Використання Lock та Condition: Застосувати
Lockдля контролю доступу до спільних ресурсів іConditionдля координації потоків.
Поле counter у класі TaskLockExample вказане не випадково, вам потрібно перевіряти його значення у кожному методі і залежно від того, що там знаходиться, вирішувати, чи запускати цей потік чи ні.
Також необхідно використовувати поля lock та condition для блокування певного потоку та визначення, хто буде першим, другим, третім.
Після реалізації методів і переходу до класу Main та запуску його головного методу, ви повинні отримати результат незалежно від того, в якому порядку і який потік викликає який метод.
Також виведіть щось у консоль, щоб перевірити, чи методи виконуються у правильному порядку.
Ви також можете поміняти місцями запуск потоків (не саму реалізацію, а саме місце, де викликається метод start() потоку)
Після того як ви впевнені, що все працює, запустіть тести перевірки за шляхом /src/test/java/TaskLockExampleTest.java.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.33
Завдання: Lock і Condition
Свайпніть щоб показати меню
Опис завдання
Уявіть, що ви розробляєте контролер світлофора для жвавого перехрестя. Система світлофора складається з трьох етапів: червоне світло, жовте світло та зелене світло. Ці етапи мають виконуватися у певній послідовності для забезпечення безпеки та ефективного руху транспорту.
Ваше завдання — реалізувати методи: redLight(), yellowLight() та greenLight(). Ці методи повинні виконуватися суворо у порядку, як у справжньому світлофорі: спочатку червоне світло, потім жовте світло і нарешті зелене світло, незалежно від того, у якому порядку потоки викликають ці методи.
Вимоги:
- Синхронізація: Гарантувати виконання методів у суворій послідовності;
- Мультипотоковість: Методи можуть викликатися з різних потоків, але виконання має відбуватися у порядку:
redLight(),yellowLight(),greenLight(); - Використання Lock та Condition: Застосувати
Lockдля контролю доступу до спільних ресурсів іConditionдля координації потоків.
Поле counter у класі TaskLockExample вказане не випадково, вам потрібно перевіряти його значення у кожному методі і залежно від того, що там знаходиться, вирішувати, чи запускати цей потік чи ні.
Також необхідно використовувати поля lock та condition для блокування певного потоку та визначення, хто буде першим, другим, третім.
Після реалізації методів і переходу до класу Main та запуску його головного методу, ви повинні отримати результат незалежно від того, в якому порядку і який потік викликає який метод.
Також виведіть щось у консоль, щоб перевірити, чи методи виконуються у правильному порядку.
Ви також можете поміняти місцями запуск потоків (не саму реалізацію, а саме місце, де викликається метод start() потоку)
Після того як ви впевнені, що все працює, запустіть тести перевірки за шляхом /src/test/java/TaskLockExampleTest.java.
Дякуємо за ваш відгук!