С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для lerenia
3 / 3 / 3
Регистрация: 16.10.2012
Сообщений: 192

Написание потокобезопасной обертки для заданного интерфейса

16.10.2014, 16:37. Показов 1501. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нам дали такое задание:
Имеется интерфейс

interace MyObj {
setReady(bool flag);
bool isReady();
}
и, соответственно, его реализация, о которых известно что они являются потоконебезопасными (моделируем использование сторонней библиотеки). Требуется написать потокобезопасную обертку для этого интерфейса вида:
class A {
private final MyObj obj = new ...

public void setReady(bool flag) { ..}

public void waitForReady() { .. }

}

При этом метод waitForReady() должен отпускать поток, только когда выполняется условие obj.isReady() == true.
Я создала интерфейс как сказано в задании:
Java
1
2
3
4
5
public interface MyObj {
    void setReady(boolean flag);
    boolean isReady();
 
}
затыки начинаются когда я класс пытаюсь создать
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Realiz implements MyObj{
    private final MyObj obj = new Realiz();
    private boolean ready = false;
 
    public void waitForReady() {
       
    }
 
    @Override
    public void setReady(boolean flag) {
        ready=flag;
 
    }
 
    @Override
    public boolean isReady() {
        return ready;
    }
}
и не понимаю что делать дальше, когда я спросила преподавателя какая именно должна быть реализация мне написали: нужно создать потоконебезопасную реализацию, а затем реализовать класс-обертку, позволяющий работать с ней потокобезопасно.
кстати у меня вопрос, что такое класс обертка?
Причем метод waitForReady() должен отпускать потом когда obj.isReady()==true, который принимает это значение
при любом условиии, т.е. решение должно включать следующий сценарий - при ready=false запускается n-потоков, которые останавливаются в методе waitForReady, затем вызывается метод обертки setReady(true), после чего остановленные потоки продолжают свою работу.
Метод setReady в потокобезопасной обертке вызывает одноименный метод у обертываемой реализации MyObj + выполняет необходимые действия по обеспечению синхронизациии. Внешняя его сигнатура также должна быть идентична обертываемому методу.
Я сейчас читаю Герберта шилдта про потоки и одновременно пытаюсь применить то что понимаю к своему заданию, но не понимаю главного что нужно сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2014, 16:37
Ответы с готовыми решениями:

Написание интерфейса в С# для работы с SQL
Доброго времени суток. Я был бы очень благодарен тем, кто поможет мне разобраться с такой задачей. Столкнулся с проблемой,...

Ошибка написание интерфейса для mail client
Добрый день. Недавно начал осваивать написание мэйл клиентов на java. У меня есть код, но и имеется маленькая ошибка с геттером. На вид...

CGI C++ QT Написание web-интерфейса для радио
Есть вопрос, может кто подскажет хорошую литературка по написанию CGI на C++. Реализация проекта на Linux.

5
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
16.10.2014, 20:52
Цитата Сообщение от lerenia Посмотреть сообщение
что такое класс обертка
Адаптер (шаблон проектирования)

Цитата Сообщение от lerenia Посмотреть сообщение
что нужно сделать?
Короче, чтобы все потоки в момент времени видели одно и то же значение ready, и когда откуда-то вызывается waitForReady(), то происходит "заморозка", следующие операторы не выполняются, пока ready не станет true.
0
 Аватар для lerenia
3 / 3 / 3
Регистрация: 16.10.2012
Сообщений: 192
16.10.2014, 23:11  [ТС]
Цитата Сообщение от MLPMan Посмотреть сообщение
откуда-то вызывается waitForReady()
во во, это откуда?)))

Цитата Сообщение от MLPMan Посмотреть сообщение
пока ready не станет true.
вот снова возникает вопрос когда ready станет true? просто ему присвоить значение тру?
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
17.10.2014, 04:40
Цитата Сообщение от lerenia Посмотреть сообщение
во во, это откуда?)))
Откуда-нибудь, с любого потока.

Цитата Сообщение от lerenia Посмотреть сообщение
вопрос когда ready станет true?
Когда один из потоков вызовет setReady(true).

Цитата Сообщение от lerenia Посмотреть сообщение
просто ему присвоить значение тру?
Да, но не сразу, а сначала надо убедится, что пауза включается. Собственно, надо будет написать "2 кода", саму реализацию задачи, и демонстрацию, что всё правильно пашет.
0
 Аватар для lerenia
3 / 3 / 3
Регистрация: 16.10.2012
Сообщений: 192
17.10.2014, 20:41  [ТС]
Цитата Сообщение от MLPMan Посмотреть сообщение
саму реализацию задачи, и демонстрацию, что всё
это получается в разных классах будет?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
17.10.2014, 22:37
lerenia, да, сделайте в разных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2014, 22:37
Помогаю со студенческими работами здесь

Написание графического интерфейса для управления com-port
Здравствуйте подскажите пожалуйста как лучше реализовать данную задачу. Задача такова: есть уже готовый рабочий проект написанный на...

Написание программы для подбора цветовой гаммы пользовательского интерфейса
Написать программу, предназначенную для подбора цветовой гаммы пользовательского интерфейса. Программа должна выводить на экран макет...

Написание интерфейса
Помогите ссылочками ..документацией. примерами. Планирую разработать небольшое приложение // Java + MySQL ... но как это связать с...

Написание базы и интерфейса к ней
Дайте какие-то полезные ссылки или информацию как написать базу данных, если еще ниразу не писал базу и вообще в этом не сильно разбираюсь.

Написание интерфейса к готовому приложению
Добрый вечер. Гугление привело меня на отдельные уроки по самому WPF (с удовольствием посмотрел уже несоклько), но главный вопрос вечера...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru