Инфоурок Информатика ПрезентацииПотоки в Java. Для студентов университетов.

Потоки в Java. Для студентов университетов.

Скачать материал
Скачать материал

Описание презентации по отдельным слайдам:

  • Параллелизм и потоки в JavaFor students of university
Author: Oxana Dudnik

    1 слайд

    Параллелизм и потоки в Java
    For students of university
    Author: Oxana Dudnik

  • 2 слайд

  • 3 слайд

  • 4 слайд

  • Создание потокаСуществует два способа:
 реализацией интерфейса Runnable; 
cl...

    5 слайд

    Создание потока

    Существует два способа:
    реализацией интерфейса Runnable;
    class MyClass implements Runnable {
                                    public void run() {
    // тело метода run
    }
    }

    наследованием класса Thread.
    class MyClass extends Thread {
    public void run() {
                                   // тело метода run()
    }
    }

  • Запуск потокаПришло время запустить поток. Это настолько просто, что врядли...

    6 слайд

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

    Пришло время запустить поток. Это настолько просто, что врядли заслуживает отдельного раздела:

    t.start();

    Что происходит после старта потока? А происходит следующее:
    Стартует новый поток выполнения (с новым стэком вызовов).
    Поток переходит из состояния new (новый) в состояние работоспособный (runnable).
    Когда поток получает шанс выполниться, он вызывает метод run().

  • Планировщик потоковПланировщик потоков является частью JVM (хотя некоторые J...

    7 слайд

    Планировщик потоков

    Планировщик потоков является частью JVM (хотя некоторые JVM мапят Java-потоки на нативные потоки ОС) и решает какой поток будет работать в определенный момент.
    Любой поток, имеющий состояние runnable (работоспособный), может быть выбран планировщиком для выполнения.

  • Состояния потоков

    8 слайд

    Состояния потоков

  • Управление выполнением потоковsleep(long millis); - задает задержку в миллис...

    9 слайд

    Управление выполнением потоков

    sleep(long millis); - задает задержку в миллисекундах;
    sleep(long millis, int nanos) – задает задержку в миллисекундах и наносекундах.
    Приостановка потока, с передачей управления другому потоку производится статическим методом yield().
    Прервать работу выполняемого потока можно с помощью метода interrupt().
    Чтобы определить состояние потока используется метод isAlive().
    Иногда, для выполнения потока необходимо дождаться завершения другого потока. В этих случаях вам поможет метод join().

  • start(). Запускает поток на выполнение.
stop(). Заканчивает выполнение поток...

    10 слайд


    start(). Запускает поток на выполнение.
    stop(). Заканчивает выполнение потока.
    sleep(long msec). Останавливает выполнение потока на указанное количество миллисекунд.
    yield(). Передает ресурсов процессора другому потоку.
    suspend(). Приостанавливает выполнение потока.
    resume(). Возобновляет выполнение потока.

  • Synchronized

    11 слайд

    Synchronized

  • Synchronized objectObject sync = new Object(); ... synchronized(sync){ }

    12 слайд

    Synchronized object
    Object sync = new Object(); ... synchronized(sync){ }

  • Synchronized methodpublic synchronized void someMethod(){ // code } 
... полн...

    13 слайд

    Synchronized method
    public synchronized void someMethod(){ // code }
    ... полностью эквивалентно следующей конструкции:
    public void someMethod(){ synchronized(this){ // code } }

  • Synchronized classpublic class SomeClass{ public static synchronized void som...

    14 слайд

    Synchronized class
    public class SomeClass{ public static synchronized void someMethod(){ //code }
    }
    . эквивалентно:
    public class SomeClass{ public static void someMethod(){ synchronized(SomeClass.class){ //code } }
    }

  • Взаимные блокировки, deadlocks Что такое взаимная блокировка по своей сути? В...

    15 слайд

    Взаимные блокировки, deadlocks
    Что такое взаимная блокировка по своей сути? Все достаточно просто. Предположим, что один поток уже захватил монитор на некотором объекте x и для продолжения работы ему нужно захватить монитор на объекте y.
    В другом же потоке ситуация ровно обратная – он уже захватил монитор на объекте y и ему нужен монитор объекта x.
    В результате оба потока будут ждать, пока нужный монитор освободится. Как вы сами прекрасно понимаете, ждать они будут до бесконечности.
    Эта ситуация и называется взаимной блокировкой – deadlock.

  • 16 слайд

  • 17 слайд

  • StarvationНазвание starvation полностью соответствует проблеме. Когда множест...

    18 слайд

    Starvation
    Название starvation полностью соответствует проблеме. Когда множество потоков постоянно находятся в борьбе за один критический ресурс, то все ждут, пока кто-то один освободит этот ресурс. Потом из ждущих по какому-либо алгоритму выбирается только кто-то один, кто следующим захватит ресурс. Таким образом, может найтись один такой поток, который никогда не получит доступ к ресурсу, потому что другие потоки постоянно захватывают ресурс раньше него.

  • livelock livelock частая проблема в асинхронных системах. Там потоки почти не...

    19 слайд

    livelock
    livelock частая проблема в асинхронных системах. Там потоки почти не блокируются на критических ресурсах. Вместо этого они выполняют свою небольшую неблокируемую задачу и отправляют её в очередь на обработку другими потоками. Может возникнуть ситуация, когда потоки друг другу начинают перекидывать какое-то событие и его обработка зацикливается. Явного бесконечного цикла, как бы, не происходит, но нагрузка на асинхронную систему резко возрастает. В результате чего эти потоки больше ничем не успевают занимаются.

  • 20 слайд

  • 21 слайд

  • Modificator volatileопределение переменной с ключевым словом volatile(«изменч...

    22 слайд

    Modificator volatile
    определение переменной с ключевым словом volatile(«изменчивый») означает, что значение переменной будет изменяться разными потоками.
    чтение volatile переменных синхронизировано и запись в volatile переменные синхронизирована, а неатомарные операции – нет.
    Что означает, что следующий код не безопасен для потоков:
    myVolatileVar++;

  • Non-volitile variable

    23 слайд

    Non-volitile variable

  • Volitile variable

    24 слайд

    Volitile variable

  • В чем разница между volatile и synchronized? synchronized имеет два важных мо...

    25 слайд

    В чем разница между volatile и synchronized?
    synchronized имеет два важных момента: это гарантия того, что только один поток выполняет секцию кода в один момент времени (взаимоисключение или mutex), и также гарантия того, что данные, изменённые одним потоком, будут видны всем другим потокам (видимость изменений).
    volatile проще, нежели синхронизация и подходит только для контроля доступа к одиночному экземпляру или переменной примитивного типа: int, boolean... Когда переменная объявлена как volatile, любая запись её будет осуществляться прямо в память, минуя кеш. Также как и считываться будет прямо из памяти, а не из всевозможного кеша. Это значит, что все потоки будут "видеть" одно и то же значение переменной одновременно.

  • Literaturehttps://www.youtube.com/watch?v=1WfbAs6ZJD0
https://www.youtube.com...

    26 слайд

    Literature
    https://www.youtube.com/watch?v=1WfbAs6ZJD0
    https://www.youtube.com/watch?v=RrDaXkiXDfA
    https://www.youtube.com/watch?v=J1IYHMPMfS4
    http://echuprina.blogspot.com/2012/02/java-1.html
    http://www.skipy.ru/technics/synchronization.html#management


Краткое описание документа:

Когда запускается любое приложение, то начинает выполняться поток, называемый главным потоком (main). От него порождаются дочерние потоки. Главный поток, как правило, является последним потоком, завершающим выполнение программы.

Потоки — средство, которое помогает организовать одновременное выполнение нескольких задач, каждой в независимом потоке. Потоки представляют собой экземпляры классов, каждый из которых запускается и функционирует самостоятельно, автономно (или относительно автономно) от главного поток. Хочу еще разграничить два понятия – поток и процесс. Процесс – это задача операционной системы. У него собственное адресное пространство. С ним может быть проассоциировано несколько потоков. Поток же – это гораздо более мелкая единица. Все потоки разделяют адресное пространство породившего их процесса и имеют доступ к одним данным.

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 175 916 материалов в базе

Скачать материал

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 16.02.2015 1060
    • PPTX 820 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Dudnik Oxana Antonovna. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Dudnik Oxana Antonovna
    Dudnik Oxana Antonovna
    • На сайте: 8 лет и 2 месяца
    • Подписчики: 1
    • Всего просмотров: 24906
    • Всего материалов: 37

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой