Задачи по Яве (ява - джава) фкн вгу 2 семестр

1) Задачи на тему "Потоки и их синхронизация"

1. Написать приложение с GUI, которая отображает гонку нескольких
машин по прямой траектории. За движение каждой машины отвечает
отдельный поток. Каждые 100 миллисекунд машина продвигается на
определенное количество пикселей вдоль пути. Это количество
выбирается на основе той скорости, которой сейчас обладает автомобиль.
Скорость автомобиля меняется каждую итерацию на случайную величину.

2. Игра "Пинг-понг". Шарик и две ракетки управляются потоками. У ракеток
одинаковая скорость передвижения. После того, как ракетка "отбила"
шарик, она перестает двигаться до тех пор, пока другая ракетка не
"отобьет" шарик обратно.

3. Игра "Два червя". Игровое поле состоит из квадратиков. Ширина и высота
поля задаются отдельно. Червяк занимает только один квадратик. С начала
на поле появляются два червя. Их цель - "съесть" некоторый ресурс,
который появляется на поле в случайной позиции и занимает один квадрат.
Как только один из червей "съедает" квадратик, то он появляется заново
в новой позиции и игра продолжается.

4. Написать программу для форматирования текстовых файлов в папке.
Форматирование файла заключается в "обрезании" строк до указанной длинны.
Для каждого файла запускается отдельный поток форматирования.

5. Написать программу для подсчета размера указанной папки. Для каждого
подкаталога запускать отдельный поток на расчет его размера.

6. Написать программу для подсчета количества строк в текстовых файлах
указанной папки. Для каждого файла запускается отдельный поток подсчета.

7. Написать программу для слияния нескольких файлов в один. Файлы "сливаются"
порционно, т.е. не целиком. Для получения очередной порции очередного файла
используется отдельный поток. Также, необходим отдельный поток для кода, который
будет записывать в новый файл очередную полученную порцию

8. Разделение одного файла на несколько. Задача аналогична заданию с вариантом 7,
только в обратном порядке.

9. Поиск файлов по расширению и подстроке в множестве файлов,
заданном начальной директорией и расширением файла.
Отдельный поток ищет файлы с требуемым расширением.
Для проверки наличия искомой подстроки в таких файлах создается
отдельный поток на каждый файл. Файлы могут быть не только текстовые.

10. Написать приложение с GUI, которое отображает движение шариков в замкнутом
пространстве (квадрате). Шарики должны отражаться друг от друга и от стенок
квадрата в соответствии с законами физики (сохранения энергии и сохранения
импульса). Движение каждого шарика обслуживается отдельным потоком. Каждые
10 миллиссекунд шарик анализирует, не столкнулся ли он с каким-либо другим
шариком. Если столкнулся, то изменяет свою скорость и направление, а также
скорость и направление шарика, с которым он столкнулся. Если столкновения
нет, то он просто перемещается на новую позицию в соответствие со своими
текущей скорость и направлением движения. Отдельный поток занимается
отрисовкой текущего расположения шариков.

11. Замена подстроки в множестве файлов. Задача во многом аналогичная задаче 9.

12. Загрузка из интернет (по протоколу http) множества файлов, url-адреса
которых заданы в файле.

13. Простейший web-сервер
(каркас многопоточного сервера находится в ../../Примеры/Server).
При старте сервера задается RootDir и порт, который данный сервер слушает.
Требуется прочитать из сокета поступивший запрос, разобрать, к какому
файлу он предназначался, записать заголовок ответа и содержимое
данного файла в сокет в качестве ответа
(необходимо изучить основы протокола http).