Лабораторная работа №3

Многопоточное и параллельное программирование на Java

Цель лабораторной работы:
  1. Изучить основные концепции параллельного и многопоточного программирования
  2. На практике научиться программировать многопоточные приложения
   

1. Многопоточное программирование в Java

1.1 Общие теоретические сведения

1.1.1 Многопоточная архитектура Отобразить/Скрыть

1.1.2 Базовые классы для работы с потоками Отобразить/Скрыть

1.1.3 Синхронизация Отобразить/Скрыть

1.1.4 Методы wait(), notify(), notifyAll() класса Object Отобразить/Скрыть

1.2 Управление потоками выполнения

Продвинутые сведения про работу с потоками, а также про методы управления ними, можно посмотреть здесь (pdf, 836 kb, 13 стр.) .

2. Задание на лабораторную работу

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

Условия задач согласно варианту:

  1. Cоздать фрейм (Swing – приложение) с использованием потоков: строка движется горизонтально, отражаясь от границ фрейма и меняя при этом случайным образом свой цвет.
  2. Cоздать фрейм (Swing – приложение) с использованием потоков: строка движется по диагонали. При достижении границ фрейма все символы строки случайным образом меняют регистр.
  3. Организовать сортировку массива методами Шелла и пузырька в разных потоках (Консольное приложение).
  4. Организовать сортировку массива методами Простых вставок и на основе бинарного дерева в разных потоках (Консольное приложение).
  5. Cоздать фрейм (Swing – приложение) с тремя шариками, одновременно летающими в окне. С каждым шариком связан свой поток со своим приоритетом. При достижении края фрейма, шарик «отскакивает» под соответствующим углом.
  6. Изобразить в приложении (Swing) правильные треугольники, вращающиеся в плоскости экрана вокруг своего центра. Каждому объекту соответствует поток с заданным приоритетом.
  7. Создать фрейм (Swing – приложение) с точкой, движущейся по окружности с постоянной угловой скоростью. Нажатие клавиши мыши должно приводить к изменению угловой скорости движения точки (левая — ускорять, правая — замедлять).
  8. Два изображения выводятся в окно. Затем они постепенно исчезают с различной скоростью в различных потоках (случайным образом выбираются точки изображения, и их цвет устанавливается в цвет фона).
  9. Условие предыдущей задачи изменить на применение эффекта постепенного “проявления” двух изображений.
  10. Изобразить точку, пересекающую с постоянной скоростью окно слева направо (справа налево) параллельно горизонтальной оси. Как только точка доходит до границы окна, в этот момент от левого (правого) края с вертикальной координатной y, выбранной с помощью датчика случайных чисел, начинает свое движение другая точка и т.д. Цвет точки также можно выбирать с помощью датчика случайных чисел. Для каждой точки создается собственный поток.
  11. Создать фрейм (Swing – приложение) с правильным многоугольником, вращающимся с постоянной скоростью вокруг своего центра масс. Нажатие клавиши мыши должно приводить к увеличению (не более, чем до 12 при нажатии левой клавиши) или уменьшению (не менее, чем до 4 при нажатии правой клавиши) количества вершин этого многоугольника.

3. Отчет

Должен содержать: постановку задачи, программный код решения, результат работы написанной программы