Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции, Кокарева, TR_TKC / 6. Параллельное выполнение

.docx
Скачиваний:
55
Добавлен:
15.03.2016
Размер:
50.42 Кб
Скачать

Многопоточность в Java

Лекция 5 по дисциплине: Технология разработки ТК сервисов

СибГУТИ

7, 2015

Автор: Е.В. Кокорева

1. Многозадачность

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

Различают:

- многозадачность, основанная на процессах (Process) – даёт возможность одновременно запускать несколько программ на уровне крупных структурных единиц;

- многозадачность, основанная на потоках (Thread) – дат возможность одновременно запускать части одной и той же программы на уровне мелких структурных единиц.

Свойства потоков:

- потоки разделяют одно и то же адресное пространство, могут разделять также код и данные;

- переключение между потоками проще, чем между процессами;

- стоимость взаимодействия потоков относительно низка;

- внутри программы может выполняться много потоков.

Многопоточное программирование заключается в следующем:

- создание потоков и представление кода, который будет выполняться потоком;

- доступ к общим данным и коду через синхронизацию;

- переход между состояниями потока.

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

Поток в Java представлен объектом класса Thread.

Реализация потока достигается одним из двух способов:

- реализация интерфейса java.lang.Runnable;

- расширение класса java.lang.Thread.

Интерфейс Runnable имеет один прототип метода run().

Код в методе run() определяет независимый путь выполнения, вход и выход из потока. Поток завершается, когда метод run() заканчивает работу.

3. Методы класса Thread

Метод

Описание

final String getName()

Получает имя потока.

final int getPriority()

Получает приоритет потока.

final boolean isAliveO

Определяет, выполняется ли поток.

final void join()

Ожидает завершения потока.

void run()

Определяет точку входа в поток.

static void sleep(long msec)

Приостанавливает исполнение потока на указанное число миллисекунд.

void start()

Запускает поток, вызывая его метод run().

4. Пример работы с потоком на основе класса Thread

import java.io.*;

import java.util.*;

import java.lang.*;

public class Eigth extends Thread{ // Класс-поток

static int count;

String name;

public Eigth(String name) {// Конструктор

super(name);

count = 1;

start();

}

public void run() { //

System.out.println("Tread " + this.getName() + " running " + count);

try {

while (count < 5) {

System.out.println("Tread " + this.getName() + " running " + count++);

sleep(100);

}

} catch (Exception e) {

} finally {

System.out.println("Exit from Thread " + this.getName());

}

}

public static void main(String[] args) {

Eigth first = new Eigth("First");

Eigth second = new Eigth("Second");

Eigth third = new Eigth("Third");

}

}

Результат работы:

Tread Third running 1

Tread Third running 1

Tread Second running 1

Tread Second running 2

Tread First running 1

Tread First running 3

Tread First running 4

Exit from Thread Third

Tread Second running 4

Exit from Thread Second

Exit from Thread First

Спасибо за внимание!