Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации и задания для практики NetCracker / Лекции / 07. ногопоточное программирование.ppt
Скачиваний:
60
Добавлен:
08.06.2015
Размер:
518.66 Кб
Скачать

Многопоточное

программирование

© Составление, Будаев Д.С., Гаврилов А.В., 2013

Лекция 7

УНЦ «Инфоком» Самара

2013

План лекции

Потоки инструкций и многопоточное программирование

Создание потоков и управление ими

Совместное использование ресурсов и блокировки

Взаимодействие между потоками

2

Проблемы однопоточного подхода

Монопольный захват задачей процессорного времени

Смешение логически несвязанных фрагментов кода

Попытка их разделения приводит к возникновению в программе новых систем и усложнению кода

3

Многопоточное

программирование

Последовательно выполняющиеся инструкции составляют поток

Потоки выполняются условно независимо

Потоки могут взаимодействовать друг с другом

В многоядерной

поток

монопольно

одно ядроЭто не так

4

Многопоточная архитектура

При наличии нескольких процессоров теоретически каждому можно выделить отдельную задачу

Что же делать, если используется вычислительная система с одним процессором?

5

Квантование времени

(Time-Slicing)

Время разделяется на интервалы (кванты времени)

Во время одного кванта обрабатывается один поток команд

Решение о выборе потока принимается до начала интервала

Переключения между потоками с высокой частотой

T1

T2

T3

T4

T3

T4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Время

Иллюзия одновременности!

6

Преимущества

Одновременная работа нескольких приложений

Одновременное обслуживание нескольких запросов одним приложением

Одновременное обработка входящих данных от нескольких устройств

Более гибкое управление выполнением задач, возможность корректировки задачи

7

Особенности многопоточности

Простота выделения подзадач

Более медленное выполнение ?

Выигрыш в скорости выполнения при разделении задач по используемым ресурсам

Выигрыш в скорости выполнения на многоядерных системах

Недетерминизм при выполнении

8

Класс Thread

Поток выполнения представляется экземпляром класса Thread

Для создания потока выполнения можно

создать класс, наследующий Thread

переопределить метод run()

Для запуска потока используется метод start() у объекта класса-наследника

9

Использование класса Thread

Описание класса

public class <Имя класса> extends Thread { public void run() {

// Действия, выполняемые потоком

}

}

Запуск потока

<Имя класса> t = new <Имя класса>(); t.start(); //именно start(), а не run() !!!

10