|
1 / 1 / 2
Регистрация: 18.05.2011
Сообщений: 68
|
|
Многопоточность(Задачи для разбора этой темы)04.10.2017, 17:01. Показов 5863. Ответов 6
Метки нет (Все метки)
Доброго времени суток!
Хочу получить стартовый опыт работы с многопоточностью. Такие вещи лучше всего усваиваются путем практики(на мой взгляд). Просьба для тех кто работает с потоками, написать какую-нибудь задачку, приближенную к реальному опыту, если это возможно. Было бы хорошо, если бы эта задача была бы написана в таком формате: Напишите консольное приложение на языке Java, которое симулирует гонки по кругу. В гонках участвуют разные типы транспортных средств: грузовики, легковушки и мотоциклы. Все транспортные средства стартуют одновременно, проходят один круг и останавливаются. Как только все они останавливаются, приложение выводит таблицу первенства и спрашивает пользователя, хочет ли он отправить их ещё на один круг. У каждого из транспортных средств есть своя скорость и вероятность прокола колеса. Когда колесо прокалывается, транспортное средство останавливается на какое-то время и сообщает о проколе в консоль. Перед началом движения каждое транспортное средство пишет в консоль свои параметры: скорость и вероятность прокола колеса. Дополнительно грузовик должен написать, какой у него вес груза, легковушка – сколько в ней людей, а мотоцикл – есть ли у него коляска. Во время движения каждое транспортное средство пишет, какое расстояние оно уже прошло. Количество и типы транспортных средств, их параметры и длина круга считываются из конфигурационного файла. В случае неясностей в условиях задачи сделайте разумные предположения, опишите их в сопроводительном тексте и отталкивайтесь при решении задания от этих предположений.
0
|
|
| 04.10.2017, 17:01 | |
|
Ответы с готовыми решениями:
6
Нужна блок-схема для этой задачи. Можно ли использовать Python для решения этой задачи ? |
| 04.10.2017, 17:11 | |
|
0
|
|
|
1 / 1 / 2
Регистрация: 18.05.2011
Сообщений: 68
|
|
| 04.10.2017, 17:18 [ТС] | |
|
нет, это тестовое я сделал, криво, косо, но сделал.
Сейчас хочу отточить искусство, поэтому жажду еще пачку Добавлено через 4 минуты Хотя, если быть совсем честным, на отправленное решение этого задания, мне так и не ответили, вроде... (давно было дело) мб потому что там тот еще фикалекод был. Сейчас я немного подкачался, и могу даже немножко в Hibernate(CRUD операции), вот кстати если бы еще работу с бд спарить с потоками, получилась бы весьма интересная задачка)
0
|
|
|
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
|
|
|
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
|
|
|
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
|
|
| 04.10.2017, 21:56 | |
|
Помогаю со студенческими работами здесь
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
Использованы. . .
|