Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MIR-Lektsii_Java.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
207 Кб
Скачать
☆

Лекция 6. Многопоточное программирование в Java. План

  1. Принципы многопоточного программирования. Состояния потоков.

  2. Создание потока.

  3. Синхронизация потоков.

1.

Многопоточная программа в Java может соединить несколько частей, которые работают одновременно. Каждая такая часть называется потоком. Каждый поток выполняется независимо от других. В литературе можно встретить понятие не потоков, а нитей.

Использование потоков позволяет реализовывать эффективные программы, которые максимально используют ресурсы процессора, так как время его простоя сводится к минимуму. Это важно для интерактивных и сетевых средств, в которых используется Java, так как время ожидания сказывается на скорости обмена информацией.

Для сравнения расмотрим одноточную среду. Эти системы используют следующий подход: использование цикла обработки событий с буферизацией. В этой модели один поток управления выполняется в бесконечном цикле, накапливая в буфере одну очередь событий, решая какое событие обрабатывать следующим. Так, если механизм буферизации заявит о поступлении сигнала готовности файла для чтения, то из цикла событий управление будет передано соответствующему обработчику. Пока обработчик не вернет управление, никакое событие в системе не обрабатывается и процессор работает вхолостую. Т.е. в этой среде, когда поток заблокирован из-за ожидания ресурсов, прекращается и работа всей программы.

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

2.

Потоки могут находиться в нескольких состояниях:

      1. могут выпоняться;

      2. могут быть готовыми к выполнению;

      3. могут выполняться, далее поток может быть приостановлен и затем продолжен;

      4. поток может быть заблокирован при ожидании ресурса;

      5. поток может быть в любое время завершен (и потом не может быть продолжен).

Свойство потока: система Java присваивает приоритет каждому потоку, по которому определяется его взаимодействие с другими потоками. Приоритет - целое число, которое означает относительное положение одних потоков относительно других. Значение приоритета само по себе не имеет смысла и скорость выполнения отнего не зависит. Приоритет используется для определения момента переключения между выполняющимися потоками - это контекстное переключение. Его правила действия:

Лекция 7. Безопасность в Java. План

  1. Принципы многопоточного программирования. Состояния потоков.

  2. Создание потока.

  3. Синхронизация потоков.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]