- •Лекция 1. Вступление в Java. Средства разработки программ. План
- •Лекция 2. Структуры и типы данных в Java. План
- •Лекция 3. Классы и методы в Java. Операция финализации в Java. План
- •Лекция 4. Апплеты в Java. План
- •Лекция 5. Модель обработки событий Java1.0. Реализация графического интерфейса в Java. План
- •Лекция 7. Безопасность в Java. План
- •Принципы многопоточного программирования. Состояния потоков.
- •Создание потока.
- •Синхронизация потоков.
- •Лекция 6. Многопоточное программирование в Java. План
- •Принципы многопоточного программирования. Состояния потоков.
- •Создание потока.
- •Синхронизация потоков.
Лекция 6. Многопоточное программирование в Java. План
Принципы многопоточного программирования. Состояния потоков.
Создание потока.
Синхронизация потоков.
1.
Многопоточная программа в Java может соединить несколько частей, которые работают одновременно. Каждая такая часть называется потоком. Каждый поток выполняется независимо от других. В литературе можно встретить понятие не потоков, а нитей.
Использование потоков позволяет реализовывать эффективные программы, которые максимально используют ресурсы процессора, так как время его простоя сводится к минимуму. Это важно для интерактивных и сетевых средств, в которых используется Java, так как время ожидания сказывается на скорости обмена информацией.
Для сравнения расмотрим одноточную среду. Эти системы используют следующий подход: использование цикла обработки событий с буферизацией. В этой модели один поток управления выполняется в бесконечном цикле, накапливая в буфере одну очередь событий, решая какое событие обрабатывать следующим. Так, если механизм буферизации заявит о поступлении сигнала готовности файла для чтения, то из цикла событий управление будет передано соответствующему обработчику. Пока обработчик не вернет управление, никакое событие в системе не обрабатывается и процессор работает вхолостую. Т.е. в этой среде, когда поток заблокирован из-за ожидания ресурсов, прекращается и работа всей программы.
Преимущество многопотокового программирования в том, что главный цикл и механизм буферизации устранены. Один поток может перейти в состояние ожидания без остановки других частей программы.
2.
Потоки могут находиться в нескольких состояниях:
могут выпоняться;
могут быть готовыми к выполнению;
могут выполняться, далее поток может быть приостановлен и затем продолжен;
поток может быть заблокирован при ожидании ресурса;
поток может быть в любое время завершен (и потом не может быть продолжен).
Свойство потока: система Java присваивает приоритет каждому потоку, по которому определяется его взаимодействие с другими потоками. Приоритет - целое число, которое означает относительное положение одних потоков относительно других. Значение приоритета само по себе не имеет смысла и скорость выполнения отнего не зависит. Приоритет используется для определения момента переключения между выполняющимися потоками - это контекстное переключение. Его правила действия:
Лекция 7. Безопасность в Java. План
Принципы многопоточного программирования. Состояния потоков.
Создание потока.
Синхронизация потоков.
