java. lecture 08. multithreaded programming

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

Upload: colriot

Post on 04-Jul-2015

1.128 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Java. Lecture 08. Multithreaded Programming

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

Page 2: Java. Lecture 08. Multithreaded Programming

Подходы к параллельному программированию

• Threads / Processes

• OpenMP

• MPI

Page 3: Java. Lecture 08. Multithreaded Programming

Thread vs. Process

Процессы:• Независимые единицы

исполнения, хранящие информацию о своём состоянии

• Используют своё адресное пространство

• Общаются только с помощью механизмов межпроцессного взаимодействия

Потоки:• Используют общее адресное

пространство• Общаются непосредственно,

так как имеют общие переменные

Page 4: Java. Lecture 08. Multithreaded Programming

Потоки в Java

• До версии 1.1 – Green Threads (потоки реализованы внутри JVM, в userspace)

• В последующих версиях – native threads• Средства для работы с потоками – в пакете

java.util.concurrent• Начиная с версии 5.0, появились высокоуровневое API для

работы с потоками (Lock Objects, Concurrent Collections, Atomic Variables, Executors)

Page 5: Java. Lecture 08. Multithreaded Programming

Потоки в Java

• Основной класс API – Thread и интерфейс Runnable• Метод run() начинает синхронное выполнение потока,

start() – асинхронное• Прервать (временно) выполнение потока можно с помощью

sleep(int)• join() позволяет одному (вызывающему) потоку дождаться

завершения другого (вызываемого) потока• synchronized позволяет ограничить одновременный доступ

к ресурсам из разных потоков

Page 6: Java. Lecture 08. Multithreaded Programming

Группы потоков

• используются для множественного манипулирования потоками (множественного прерывания и остановки потоков)

• По умолчанию поток считается принадлежащим группе с именем main

• При создании потока можно явно указать, к какой группе он относится

• Для работы с группами потоков используется класс ThreadGroup

Page 7: Java. Lecture 08. Multithreaded Programming

Группы потоков

• используются для множественного манипулирования потоками (множественного прерывания и остановки потоков)

• По умолчанию поток считается принадлежащим группе с именем main

• При создании потока можно явно указать, к какой группе он относится

• Для работы с группами потоков используется класс ThreadGroup