Определи порядок захвата монитора. Реализуй логику метода isLockOrderNormal, который должен определять, соответствует ли порядок synchronized блоков в методе someMethodWithSynchronizedBlocks порядку передаваемых в него аргументов. Условие: Метод
- Программирование
Условие:
Реализуй логику метода isLockOrderNormal, который должен определять:
соответствует ли порядок synchronized блоков в методе someMethodWithSynchronizedBlocks - порядку передаваемых в него аргументов.
В случае, если сначала происходит синхронизация по o1, а потом по o2, метод должен вернуть true.
Если наоборот - false.
Требования:
• Метод isLockOrderNormal должен возвращать true в случае, если синхронизация в методе someMethodWithSynchronizedBlocks происходит сначала по объекту o1, а потом по o2.
• Метод isLockOrderNormal должен возвращать false в случае, если синхронизация в методе someMethodWithSynchronizedBlocks происходит сначала по объекту o2, а потом по o1.
• Метод isLockOrderNormal НЕ должен быть приватным.
• Класс Solution НЕ должен быть объявлен с модификатором final.
package com.javarush.task.task27.task2707;
/*
Определяем порядок захвата монитора
*/
public class Solution {
public void someMethodWithSynchronizedBlocks(Object obj1, Object obj2) {
synchronized (obj1) {
synchronized (obj2) {
System.out.println(obj1 + " " + obj2);
}
}
}
public static boolean isLockOrderNormal(final Solution solution, final Object o1, final Object o2) throws Exception {
//do something here
return false;
}
public static void main(String[] args) throws Exception {
final Solution solution = new Solution();
final Object o1 = new Object();
final Object o2 = new Object();
System.out.println(isLockOrderNormal(solution, o1, o2));
}
}
Решение:
Для реализации метода `isLockOrderNormal`, который будет определять порядок захвата мониторов в методе `someMethodWithSynchronizedBlocks`, нам нужно выполнить следующие шаги: 1. **Создать экземпляр класса Solution**: Мы уже имеем экземпляр класса `Solution`, который будет использоваться для вызова метода `someMethodWithSynchronizedBlocks`. 2. **Создать два объекта для синхронизации**: В методе `main` у нас уже есть два объекта `o1` и `o2`, которые мы будем передавать в метод `isLockOrderNormal`. 3. **Использовать потоки для проверки порядка синхронизации**: Мы создадим два потока, которые б...
Похожие задачи
Не нашел нужную задачу?
Воспользуйся поиском
AI помощники
Выбери предмет
- Правоохранительные органы
- Пожарная безопасность
- Парикмахерское искусство
- Природообустройство и водопользование
- Почвоведение
- Приборостроение и оптотехника
- Промышленный маркетинг и менеджмент
- Производственный маркетинг и менеджмент
- Процессы и аппараты
- Программирование
- Право и юриспруденция
- Психология
- Политология
- Педагогика
- Трудовое право
- Теория государства и права (ТГП)
- Таможенное право
- Теория игр
- Текстильная промышленность
- Теория вероятностей
- Теоретическая механика
- Теория управления
- Технология продовольственных продуктов и товаров
- Технологические машины и оборудование
- Теплоэнергетика и теплотехника
- Туризм
- Товароведение
- Таможенное дело
- Торговое дело
- Теория машин и механизмов
- Транспортные средства