java. lecture 08. multithreaded programming
TRANSCRIPT
Многопоточное программирование в Java
Подходы к параллельному программированию
• Threads / Processes
• OpenMP
• MPI
Thread vs. Process
Процессы:• Независимые единицы
исполнения, хранящие информацию о своём состоянии
• Используют своё адресное пространство
• Общаются только с помощью механизмов межпроцессного взаимодействия
Потоки:• Используют общее адресное
пространство• Общаются непосредственно,
так как имеют общие переменные
Потоки в Java
• До версии 1.1 – Green Threads (потоки реализованы внутри JVM, в userspace)
• В последующих версиях – native threads• Средства для работы с потоками – в пакете
java.util.concurrent• Начиная с версии 5.0, появились высокоуровневое API для
работы с потоками (Lock Objects, Concurrent Collections, Atomic Variables, Executors)
Потоки в Java
• Основной класс API – Thread и интерфейс Runnable• Метод run() начинает синхронное выполнение потока,
start() – асинхронное• Прервать (временно) выполнение потока можно с помощью
sleep(int)• join() позволяет одному (вызывающему) потоку дождаться
завершения другого (вызываемого) потока• synchronized позволяет ограничить одновременный доступ
к ресурсам из разных потоков
Группы потоков
• используются для множественного манипулирования потоками (множественного прерывания и остановки потоков)
• По умолчанию поток считается принадлежащим группе с именем main
• При создании потока можно явно указать, к какой группе он относится
• Для работы с группами потоков используется класс ThreadGroup
Группы потоков
• используются для множественного манипулирования потоками (множественного прерывания и остановки потоков)
• По умолчанию поток считается принадлежащим группе с именем main
• При создании потока можно явно указать, к какой группе он относится
• Для работы с группами потоков используется класс ThreadGroup