Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
1 / 1 / 2
Регистрация: 18.05.2011
Сообщений: 68

Многопоточность(Задачи для разбора этой темы)

04.10.2017, 17:01. Показов 5863. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Хочу получить стартовый опыт работы с многопоточностью. Такие вещи лучше всего усваиваются путем практики(на мой взгляд).
Просьба для тех кто работает с потоками, написать какую-нибудь задачку, приближенную к реальному опыту, если это возможно.
Было бы хорошо, если бы эта задача была бы написана в таком формате:

Напишите консольное приложение на языке Java, которое симулирует гонки по кругу. В гонках участвуют разные типы транспортных средств: грузовики, легковушки и мотоциклы. Все транспортные средства стартуют одновременно, проходят один круг и останавливаются. Как только все они останавливаются, приложение выводит таблицу первенства и спрашивает пользователя, хочет ли он отправить их ещё на один круг.
У каждого из транспортных средств есть своя скорость и вероятность прокола колеса. Когда колесо прокалывается, транспортное средство останавливается на какое-то время и сообщает о проколе в консоль.
Перед началом движения каждое транспортное средство пишет в консоль свои параметры: скорость и вероятность прокола колеса. Дополнительно грузовик должен написать, какой у него вес груза, легковушка – сколько в ней людей, а мотоцикл – есть ли у него коляска. Во время движения каждое транспортное средство пишет, какое расстояние оно уже прошло.
Количество и типы транспортных средств, их параметры и длина круга считываются из конфигурационного файла. В случае неясностей в условиях задачи сделайте разумные предположения, опишите их в сопроводительном тексте и отталкивайтесь при решении задания от этих предположений.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2017, 17:01
Ответы с готовыми решениями:

Как научиться решать рекуррентные уравнения? Что нужно знать для освоения этой темы?
Как научиться решать рекуррентные уравнения? Что нужно знать для освоения этой темы? Пожалуйста, подскажите книги/статьи/что...

Нужна блок-схема для этой задачи.
Нужна блок-схема для этой задачи. var a,b,c:byte; begin writeln('Введите a,b,c'); readln(a,b,c); if a>b then begin...

Можно ли использовать Python для решения этой задачи ?
постановка задачи(минимум) - Каждый ученик/его родители (2000 учеников в школе) может, взависемости от login , password (в любое время)...

6
04.10.2017, 17:11

Не по теме:

Цитата Сообщение от Frizka Посмотреть сообщение
очу получить стартовый опыт работы с многопоточностью. Такие вещи лучше всего усваиваются путем практики(на мой взгляд).
Просьба для тех кто работает с потоками, написать какую-нибудь задачку, приближенную к реальному опыту, если это возможно.
Было бы хорошо, если бы эта задача была бы написана в таком формате:

Цитата Сообщение от Frizka Посмотреть сообщение
В случае неясностей в условиях задачи сделайте разумные предположения, опишите их в сопроводительном тексте и отталкивайтесь при решении задания от этих предположений.
Грешным делом подумал что кто то просто хочет что бы ему лабу накатали :)
Или тестовове задание :)

0
1 / 1 / 2
Регистрация: 18.05.2011
Сообщений: 68
04.10.2017, 17:18  [ТС]
нет, это тестовое я сделал, криво, косо, но сделал.
Сейчас хочу отточить искусство, поэтому жажду еще пачку геморроя задачек

Добавлено через 4 минуты
Хотя, если быть совсем честным, на отправленное решение этого задания, мне так и не ответили, вроде... (давно было дело)
мб потому что там тот еще фикалекод был. Сейчас я немного подкачался, и могу даже немножко в Hibernate(CRUD операции), вот кстати если бы еще работу с бд спарить с потоками, получилась бы весьма интересная задачка)
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
04.10.2017, 18:30
Реализовать игру бомбермен. Без графики. Без меню и без пользовательского ввода. Интересует только логика и дизайн.

Задача состоит из двух этапов. Проверку заданий делать по этапам. То есть сначала сдали первую часть. а потом доделали вторую.

Первый этап.

1. Есть игровое поле. Представляющее из себя массив ReentrantLock[][] board.
2. Есть две нити. Нить эмулирует поведение героя. То есть герой стоит на клетке board. Клетка в этом случае должно быть заблокирована lock.lock();
3. Герой должен каждую секунду двигаться на новую клетку. При движении надо занять новую клетку. то есть tryLock() - если не получилось в течении 500 мс. то изменить движение на другую клетку.
4. Избежать появление deadlock.
5. Поле board при движении героя не должно блокироваться целиком. Блокируется только ячейка.
6. В коде использовать только immutable объекты. то есть все поле обозначит final.

Второй этап. Его можно делать только после проверки первого.

1. Есть игровое поле - двухмерный массив. Есть герои - Бомбермен и чудовища.
2. Приложение не должно блокировать все игровое поле.
3. В поле должны существовать блоки. поля куда нельзя ходить.
4. Бомбермен должен управляться через пользователя. (Пользовательский ввод реализовывать не надо) только апи, для движения.
5. Чудовища должны двигаться автоматически.
6. Предусмотреть, что если чудовище не может двинуться на клетку. например, там стоит другое чудовище, проверять в течении .5 секунд и двигаться в другую строну.
7. Сложность поля и количество чудовищ должно варьироваться.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
04.10.2017, 18:44
гуглится довольно легко, например
1. Creating and joining threads

1.a. Write a short program that prints "Hello world" from an additional
thread using the Java Thread API.

1.b. Now modify the program to print "Hello world" five times, once from each
of five different threads. Ensure that the strings are not interleaved
in the output.

1.c. Now modify the printed string to include the thread number; ensure that
all threads have a unique thread number.


2. Simple synchronisation

2.a. Write a short program in which two threads both increment a shared
integer repeatedly, without proper synchronisation, 1,000,000 times,
printing the resulting value at the end of the program. Run the program
on a multicore system and attempt to exercise the potential race in the
program.

2.b. Now modify the program to use "synchronized" to ensure that increments
on the shared variable are atomic.


3. Guarded blocks

3.a. Write a short program in which one thread increments an integer
1,000,000 times, and a second thread prints the integer -- without
waiting for it to finish.

3.b. Now modify the program to use a condition variable to signal completion
of the addition task by the first thread before the second thread prints
the value.


4. More complex constructions

4.a. We have seen several examples of producer-consumer implemented using a
number of different synchronisation primitives in pseudo-code.
Implement a ProducerConsumer class using synchronized, wait(), and
notify() in Java, and use it to pass a sequence of integer values from
one thread (the producer) to a second that prints them (the consumer).

4.b. Semaphores are a widely used synchronisation primitive -- but not one of
the fundamental primitives provided by Java. Implement a counting
semaphore using synchronized(), wait(), and notify() in Java.

4.c. Deadlocks are an inherent problem in concurrent systems using locks or
other blocking primitives. Implement a deadlock involving two threads
and two locks in Java. What debugging tools does the Java environment
offer that might help us debug this deadlock?
0
1 / 1 / 2
Регистрация: 18.05.2011
Сообщений: 68
04.10.2017, 21:03  [ТС]
Неплохие задачки, а есть в догонку к ним что-нибудь более реальное? Может со мной что не так - в игры я не могу, от слова совсем, хотелось бы какую-нибудь более прикладную, что-ли задачку, может быть из личного опыта разработки какого-нибудь приложения, или участка кода? Что-то, что можно транслировать в реальную ситуёвину(так проще выполнять, для таких крутых программистов как я)?
Вот как в примере с гонками, все просто, все понятно. Такого типа бы задачки дабы закрепить материал.
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
04.10.2017, 21:56
1. Нужно осуществлять обход файловой системы и поиск заданного текста в файловой системе.

public class ParallerSearch(String root, String text, List<String> exts) {
}

,где
root - путь до папки откуда надо осуществлять поиск.
text - заданных текст.
exts - расширения файлов в которых нужно делать поиск.

Приложения должно искать тесты в файле и сохранять адрес файла.

List<String> result(); - возвращает список всех файлов.

Логика приложения.

1. Запустить код.
2. Внутри запустить несколько потоков. Объяснить для чего нужно делать потоки.
3. Долждатся завершения поиска.
4. Вывести на консоль результат.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.10.2017, 21:56
Помогаю со студенческими работами здесь

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

Какое регулярное выражение может подойти для решения этой задачи?
Какое регулярное выражение может подойти для решения этой задачи? Задача: Найти в тексте числа (целые и вещественные, причем...

Какое регулярное выражение может подойти для решения этой задачи?
Какое регулярное выражение может подойти для решения этой задачи? В сообщении может содержаться время в формате чч:мм:сс. В заданном...

Какие классы и методы подойдут для этой небольшой задачи о распараллеливании?
Запутался во всём многообразии статей на MSDN. Имеется список объектов (процессов), у каждого из которых условно указано значение CPU...

Придумать две задачи для темы "Магазин комплектующих"
На курсовой Тема: магазин комплектующих надо придумать 2 проблемный задачи подскажите что можно сделать


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru