- •Методические указания по выполнению срс Программирование на языке java
- •Введение
- •1. Java - объектно-ориентированный язык программирования
- •1.1. Базовые типы данных
- •1.2. Операции (operators) в языке Java
- •1.2.1. Операции сравнения
- •1.2.2. Операции инкремента, декремента
- •1.3. Литералы (константы)
- •1.5. Массивы в Java
- •1.4. Операторы
- •1.6. Комментарии
- •1.7. Первая программа на языке Java
- •1.8. Цель, требования и рекомендации к выполнению задания
- •1.9. Задания
- •2. Абстрактные классы и Интерфейсы
- •2.1. Абстрактные классы
- •2.2. Интерфейсы
- •2.3. Цель, требования и рекомендации к выполнению задания
- •2.4. Задания
- •2.5. Пример выполнения задания.
- •3. Знакомство с библиотекой Swing
- •3.1. Основы оконной графики
- •3.2. Модель событий в Swing
- •3.3. Цель, требования и рекомендации к выполнению задания
- •3.4. Задания
- •3.5. Пример выполнения задания.
- •4. Апплеты
- •4.1. Проблема безопасности
- •4.2. Создание апплетов
- •4.3. Апплеты и приложения
- •4.4. Цель, требования и рекомендации к выполнению задания
- •4.5. Задания
- •4.6. Пример выполнения задания.
- •4.6.1. Запуск апплетов
- •4.6.2. Пример выполнения задания 2
- •5. Множественные нити выполнения (Multiple threads).
- •5.1. Реализация многопоточности в Java
- •5.1.1. Методы класса Thread
- •5.1.2. Реализация интерфейса Runnable
- •5.3. Завершение и останов нити
- •5.4. Приоритеты нитей
- •5.5. Средства синхронизации нитей в Java
- •5.6. Применение многопоточности для анимации
- •5.7. Цель, требования и рекомендации к выполнению задания
- •5.8. Задания
- •5.9. Пример выполнения задания.
- •Дополнительная информация и список литературы
- •Оглавление
5.7. Цель, требования и рекомендации к выполнению задания
Цель выполнения задания ознакомление с основными принципами многопоточности в языке Java, возможностью написания программ с использованием нитей.
Требования и рекомендации к выполнению задания:
проанализировать полученное задание, выделить информационные объекты и действия;
разработать программу с использованием нитей.
5.8. Задания
Создать апплет, используя поток: строка движется горизонтально, отражаясь от границ апплета и меняя при этом случайным образом свой цвет.
Создать апплет, используя поток: строка движется по диагонали. При достижении границ апплета все символы строки случайным образом меняют регистр.
Организовать сортировку массива методами Шелла, Хоара, пузырька, на основе бинарного дерева в разных потоках.
Реализовать сортировку графических объектов, используя алгоритмы из задания 3.4.
Создать апплет с точкой, движущейся по окружности с постоянной угловой скоростью. Сворачивание браузера должно приводить к изменению угловой скорости движения точки для следующего запуска потока.
Изобразить точку, пересекающую с постоянной скоростью окно слева направо (справа налево) параллельно горизонтальной оси. Как только точка доходит до границы окна, в этот момент от левого (правого) края с вертикальной координатной у, выбранной с помощью датчика случайных чисел, начинает свое движение другая точка и т.д. Цвет точки также можно выбирать с помощью датчика случайных чисел. Для каждой точки создается собственный поток.
Изобразить в приложении правильные треугольники, вращающиеся в плоскости экрана вокруг своего центра. Каждому объекту соответствует поток с заданным приоритетом.
Условия предыдущих задач изменяются таким образом, что центр вращения перемещается от одного края окна до другого с постоянной скоростью параллельно горизонтальной оси.
Создать фрейм с тремя шариками, одновременно летающими в окне. С каждым шариком связан свой поток со своим приоритетом.
Два изображения выводятся в окно. Затем они постепенно исчезают с различной скоростью в различных потоках (случайным образом выбираются точки изображения, и их цвет устанавливается в цвет фона).
Условие предыдущей задачи изменить на применение эффекта постепенного "проявления" двух изображений.
Создать апплет «Бегущая строка»
Реализовать приложение, в котором пользователь имеет возможность указывать маски файлов для поиска и набор путей, по которым эти файлы нужно искать (например, список логических дисков).
Разработать аплет, реализующий игру, который должен содержать следующие элементы: - основа пользовательского интерфейса — графические объекты, созданные на основе пакетов java.awt, java.awt.geom и классов java.awt.Graphics и java.awt.Graphics2D. - не менее двух движущихся объектов, созданных на основе тех же пакетов и классов. Каждый объект должен управляется своим потоком, что должно быть визуально заметно (например, с помощью задания разных значений в соответствующих методах Thread.sleep()). Управление игрой должно осуществляться с клавиатуры и/или мышью. Если используется только мышь, то нельзя использовать курсор, заданный по умолчанию, (вместо него надо использовать любой другой, подходящий по смыслу, или создать свой). дополнительно– в игре может вестись подсчет очков. В качестве возможного варианта игры м.б., например, «тир» или «футбол».
Написать секундомер - класс Stopwatch - для замера времени в отдельном потоке выполнения. В классе должны быть реализованы следующие методы
start – начинает отчет времени
stop – прерывает отчет времени
reset – сбрасывает текущее значение секундомера
getTime – возвращает отсчитанное время в миллисекундах
Для демонстрации работы секундомера написать консольное приложение. Пользователю должны быть доступными следующие команды:
start N – запустить секундомер и дать ему идентификатор N
stop N – остановить секундомер с идентификатором N
reset N – сбросить время у секундомера с идентификатором N
time N – показать время у секундомера с идентификатором N
help – список команд
exit – выход
16. Подсчет простых чисел. Написать Swing-приложение для подсчета простых чисел в параллельных потоках. Каждый поток подсчитывает простые числа из заданного диапазона. Всего должно быть запущено три потока подсчета. Полученные числа выдаются на экран. Можно запускать/останавливать подсчет несколько раз.
Пользователю доступны следующие элементы управления:
Кнопка запуска всех потоков
Кнопка остановки всех потоков
Поле (JTextArea) для вывода результата в виде:
<номер потока>: <число>
Например:
1: 11
2: 23
2: 31
1: 17
4 поля ввода диапазонов чисел для подсчета. Получается 3 диапазона (между 4-мя числами) для каждого потока.
Три строки с информацией о состоянии каждого потока
