Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РГТЭУ инфа экзамен.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
149.71 Кб
Скачать
  1. Базовые классы при работе с потомками выполнения в Java.

Виртуальная машина Java поддерживает многопоточность. Т.е. поддержку нескольких потоков (threads) исполнения одновременно. Для каждого из потоков выделяется отдельная подзадача, и в результате не сколько задач обслуживаются одновременно jvm. Это реализуется процедурой квантования времени. Время разделяется на небольшие интервалы, которые отдаются для обработки потока, и , за счет переключений между задачами, эмулируется многопоточная архитектура.

Преимущества многопоточности позволяет выполнять процессору несколько действий одновременно, и гибко управлять управлением задач. Процедура квантования времени поддерживает приоритеты, которые представляются в Java целыми числами. Т.е. поток с более высоким приоритетом получает большее количество квантов времени на исполнение. Например, автоматический сборщик мусора запускается в виде фонового низкоприоритетного процесса, и такие обслуживающие потоки называются deamon(s). Потоки выполнения в яве представляется экземпляром класса Thread. Для создания потока исполнения необходимо наследоваться от этого класса и переопределить метод run () в нем, а для его запуска вызвать унаследованный метод start () , сообщающий виртуальной машине о запуске виртуального потока. После завершения метода run () поток выполнения останавливается. Более простым способом создания потока исполнения является реализация интерфейса Runnable , в котором объявлен один метод void run().

Интерфейс Runnable не заменяет класс Thread , так как запуск потока исполнения становится возможным только через метод Thread.start() .Для назначения потоком приоритетов в классе Thread существуют методы get/set Priority и 3 константы: MIN_PRIORITY, MAX_ PRIORITY, NORM_ PRIORITY.

Конструктору класса Thread передается два параметра: имя потока и номер.

Формула вычислений приоритетов позволяет равномерно распределить кванты времени для запускаемых потоков. Daemon- потоки позволяют описывать фоновые процессы , используемые для обслуживания основных потоков выполнения, и не существуют без них. для работы с ними используются методы set/in Daemon.

Daemon- поток никогда не выходит за рамки метода Run и Jvm прекращает работу при завершении не Daeon- потоков. Потоки исполнения можно группировать с помощью класса ThreadGroup.

Методы sleep() и yield позволяют приостанавливать выполнение текущего потока на указанное количество миллисекунд для работы других потоков.

В многопоточной архитектуре возможны ситуации, когда несколько потоков одновременно обрабатывают одни и те же данные.При этом финальные значения будут зависеть от случайных факторов, зависящих от приоритетов потоков. И при выполнении приложений могут возникать конфликты. Эти конфликты в Java устраняются с помощью синхронизации. Виртуальная машина поддерживает основное хранилище данных, в котором хранятся значения всех переменных (поля объектов и классов, элементы массивов), используемых всеми потоками. А для каждого потока создается собственная рабочая память, в кот перед использованием копируются значения всех переменных.