Похожие презентации:
15_Potoki_Java_2
1. Запуск потоков
1. Синхронизация потоков2. Интерфейсы Callable и
Future
3. Пул потоков
2. Монитор
Синхронизация – предоставление потоку монопольногодоступа к ресурсу.
Блок synchronized – монитор синхронизации.
Если поток выполняет действия над ресурсом в мониторе,
то он монопольно разделяет ресурс и виртуальную
машину, пока не выйдет из монитора.
synchronized (Объкт_с_ресурсом){
//Вызов операций объекта
//для работы с ресурсом
Объект_с_ресурсом.операция();
}
2
3. Пулы потоков
Интерфейс Callable позволяет создавать задачи дляпараллельного выполнения.
Задача возвращает результат.
Интерфейс Fututre служит для получения результата
от задачи созданной с помощью интерфейса Callable
Задачи образуют пул.
Пулы бывают однозадачные и многозадачные
Для создания программ с пулами потоков
нужно импортировать классы из пакета
параллельной обработки потоков:
import java.util.concurrent.*;
3
4. Одно задачный пул
//Создать пулExecutorService exec = Executors.newSingleThreadExecutor();
//Создать задачу
Callable<Тип>имя_задачи = () -> {
//Код задачи
return результат;
};
//Выполнить задачу в пуле
Future <Тип> ft = exec.submit(имя_задачи);
try{
тип ответ = ft.get();
Тип – тип результата,
}
примеры:
catch(Exception e){
Dоuble
//Обработка ошибки
Integer
}
String
//Закрыть пул
exec.shutdown();
4
5. Много задачный пул
//Создать пулExecutorService exec = Executors.newFixedThreadPool(N);
//Задачи
Callable<Тип>task1 = () -> {
return ответ;};
Callable<Тип>task2 = () -> {
N – число задач
return ответ;};
…
//Запуск задач и получение результата
Future <Тип> ft1 = exec.submit(задача1);
Future <Тип> ft2 = exec.submit(задача2);
…
try{
тип ответ1 = ft1.get();
тип ответ2 = ft2.get();
…
}
catch(Exception e){
//Обработка ошибки }
5
6. Потоки Java
Контрольныезадания
6
7. Потоки Java
Задание №1. Дан ресурс в котором хранятся строкифрагмента стихотворения
А.С. Пушкина посвящённого Санкт. Питербургу.
Люблю тебя, Петра творенье
Люблю твой строгий, стройный вид,
Невы державное теченье
Береговой её гранит
Твоих оград узор чугунный
Твоих задумчивых ночей
Прозрачный сумрак, блеск безлунный
Когда я в комнате моей
Пишу, читаю без лампады
Напишите программу которая
И ясны спящие громады
соответствует
Пустынных улиц, и светла
UML схеме классов
Адмиралтейская игла
И, не пуская тьму ночную
На золотые небеса
Одна заря сменить другую
7
Спешит, дав ночи полчаса.
8. Потоки Java
См. Далее8
9. Потоки Java
ПотокНазвание
Задержка в
потоке, сек
objTOne
Первый поток
1
objTWo
Второй поток
0,3
objTThree
Третий поток
0,7
См. Далее
9
10. Потоки Java
Вывод программыСм. Далее
10
11. Потоки Java
1112. Потоки Java
Задание №2. Напишите программу на основепрограммы №1, для монопольного
использования ресурса – строк
стихотворения потоками в мониторе - блоке
синхронизации.
Потоки должны «читать» стихотворение в
порядке очередности.
12
13. Потоки Java
Вывод программы,очередность
чтения потоками
стихотворения
может отличаться
См. Далее
13
14. Потоки Java, класс Thread
См. Далее14
15. Потоки Java, класс Thread
См. Далее15
16. Потоки Java
Задание №3. Напишите программу в соответствиис UML диаграммами для вычисления объёма.
См. Далее
16
17. Потоки Java
Пауза, одна секундаОтвет
17
18. Потоки Java
Задание №4. Дан блок данных, натуральные числа иалгоритмы для вычисления их суммы и произведения.
Напишите программу в соответствии с UML
диаграммой состояний, которая использует эти
алгоритмы.
numbers = [100, 5, 6, 300,50,25,90,10,50]
Сумма
Произведение
См. Далее
18
19. Потоки Java
См. Далее19
20. Потоки Java
Результат20
Программирование