Основы программирования на Java. Потоки

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "Основы программирования на Java. Потоки"

Транскрипт

1 Основы программирования на Java Потоки

2 Программа Классы и объекты в Java: основные сведения Управление памятью для ссылочных типов Реализация наследования в Java Пакеты как механизм реализации пространств имен в Java Абстрактные классы и интерфейсы Настраиваемые типы Обработка исключений Многопоточное программирование: основы 2

3 Процесс (process) выполняющаяся программа, получающая от операционной системы собственное адресное пространство > Операционная система обеспечивает многозадачность, управляя процессами > Процессы могут исполняться различными процессорами (если система многопроцессорная) > Если один процессор обслуживает несколько процессов, видимость одновременной работы достигается постоянными переключениями между процессами 3

4 Процесс (process) выполняющаяся программа, получающая от операционной системы собственное адресное пространство > Политика защиты адресных пространств процессов зависит от операционной системы > В Windows адресные пространства процессов тщательно разделены Повышение надежности процессов Требуется много ресурсов и времени Связи между процессами ограничены 4

5 Поток (thread) часть многопоточной программы, выполняемая одновременно с другими такими же частями в одном адресном пространстве, 5

6 Поток (thread) наименьшая единица диспетчеризации в многозадачной среде, основанной на потоках Другие русскоязычные эквиваленты: > нить > легковесный процесс > подпроцесс > тред 6

7 Реализация в Java > Встроенная поддержка на уровне языка > Это означает встроенные средства взаимодействия с ОС, управляющей потоками > Каждая программа состоит, по крайней мере, из одного потока > При запуске программы запускается ее главный поток (main thread), главный поток должен завершиться последним > Главный поток может создавать другие потоки, 7

8 Приоритет потока определяет порядок обработки этого потока относительно других потоков > Высокий приоритет НЕ означает, что один поток выполняется быстрее другого > Используется для того, чтобы решить, когда переключаться от одного потока к следующему (переключение контекста) > Переключение контекста регулируется правилами 8

9 Правила переключения контекста > Поток может добровольно отказаться от управления > Делается явно переходом в режим ожидания или блокировки > Управление передается потоку с наибольшим приоритетом > Поток может быть приостановлен более приоритетным потоком (упреждающая многозадачность, preemptive multitasking) > То есть как только поток с более высоким приоритетом хочет выполниться, он сразу же это делает 9

10 Правила переключения контекста > При равном приоритете правила переключения зависят от конкретной операционной системы > Windows: автоматическое циклическое квантование потоков по времени > Solaris: потоки равного приоритета добровольно передают управление другим потокам > Вывод: одна и та же многопоточная программа может по разному выполняться в разных операционных средах 10

11 Класс java.lang.thread > Конструкторы Thread() Thread(String name) Thread(Runnable target) Thread(Runnable target, String name) Создает новый класс-поток Создает новый именованный класс-поток Создает новый класс-поток на основе экземпляра Runnable, чей метод run() будет исполняться в отдельном потоке Создает новый именованный класс-поток на основе Runnable 11

12 Класс java.lang.thread > Константы public final static int MAX_PRIORITY Максимальный приоритет 10 public final static int MIN_PRIORITY public final static int NORM_PRIORITY Минимальный приоритет 1 Обычный приоритет 5 12

13 Класс java.lang.thread > Методы для получения сведений о потоке public static Thread currentthread() public final String getname() throws SecurityException public final String setname(string name) public void interrupt() Возвращает ссылку на активный в настоящее время поток. Возвращает имя потока. Устанавливает имя потока. Прерывает поток. public int getpriority() Возвращает приоритет потока. 13

14 Класс java.lang.thread > Методы для управления состоянием потока public void run() public void start() Указать точку входа в поток Запускает выполнение метода run() в отдельном потоке. public void join(thread other) Приостанавливает исполнение текущего потока до тех пор пока поток other не завершится. public void sleep(long delay) Приостанавливает выполнение потока на delay миллисекунд. public void yield() Метод пробует отказаться от выполнения на ЦП в пользу других потоков. 14

15 Класс java.lang.thread > Методы для управления состоянием потока (в Java2 объявлены public void public void public void suspend() Завершает выполнение потока Восстанавливает выполнение потока Приостанавливает выполнение потока до тех пор, пока не будет вызван метод resume() > Рекомендуемый способ управления в Java2 синхронизация по событиям 15

16 Класс java.lang.thread > Методы для получения информации о состоянии потока public final boolean isalive() Определяет, работает ли поток public final boolean isinterrupted() public final State getstate() Определяет, был ли поток прерван Возвращает состояние потока как значение перечислимого типа enum Thread.State 16

17 Состояния потока Константы Описание состояния enum Thread.State NEW RUNNABLE BLOCKED WAITING Java 2 v5.0 (Tiger) Создан, но не запущен Выполняется ( = активно использует ресурсы процессора) Заблокирован, ожидает ресурсов или событий Ждет окончания работы другого потока TIMED_WAITING TERMINATED Ждет окончания работы другого процесса в течение некоторого времени Завершен 17

18 Два способа создания нового потока > Расширить класс Thread > Реализовать интерфейса Runnable Thread Runnable NewThread NewThread 18

19 Demo: Thread1Sample Многопоточное программирование: основы Два способа создания нового потока > Расширить класс Thread > Обязательно переопределить метод run() > Можно переопределить другие методы class NewThread extends Thread public void run () { //... } } 19

20 Demo: Thread2Sample Многопоточное программирование: основы Два способа создания нового потока > Реализовать интерфейс Runnable > Реализовать метод run() > Создать поток класса Thread > Запустить поток class NewThread implements Runnable { } Thread t = new Thread(...); public void run () { } //... 20

21 Два способа создания нового потока: выбор > Реализовать интерфейс Runnable > Разумно в тех случаях, если дело ограничивается реализацией только метода run() > Можно наследовать от другого класса > Наследовать от Thread > Если нужно переопределить и другие методы > От других классов наследовать нельзя Но можно реализовать другие интерфейсы! > Как правило, приходится писать меньше кода 21

22 Две схемы запуска потока > Вызов метода start() происходит в конструкторе класса, производного от Thread или реализующего Runnable > Создание экземпляра потока автоматически запустит новый поток > Конструктор класса, производного от Thread или реализующего Runnable, не вызывает метод start() > Нужно явно вызвать метод start() после создания экземпляра потока 22

23 Demo: ThreadPrioritySample Многопоточное программирование: основы Использование приоритетов потока > Теоретически, поток с большим приоритетом получает больше процессорного времени > Многое зависит от того, как реализован многозадачный режим в операционной системе Спецификатор volatile в рассматриваемом примере > Предотвращает оптимизацию цикла > Гарантирует просмотр переменной на каждой итерации 23

24 Demo: ThreadSynchro1Sample Многопоточное программирование: основы Синхронизация потоков > Проблема разделяемых ресурсов class Deposit { int balance; Deposit( int startbalance ) { balance = startbalance; } void setbalance( int newbalance ) { balance = newbalance; } int getbalance() { return balance; } 24 }

25 Demo: ThreadSynchro2Sample Многопоточное программирование: основы Синхронизация потоков > Спецификатор synchronized для методов class Deposit { int balance; Deposit( int startbalance ) { balance = startbalance; } synchronized void setbalance( int newbalance ) { balance = newbalance; } synchronized int getbalance() { return balance; } 25 }

26 Demo: ThreadSynchro3Sample Многопоточное программирование: основы Синхронизация потоков > Инструкция synchronized для объектов Deposit deposit; //... synchronized( deposit ) { // Объект deposit блокируется для изменения другими // объектами int balance = deposit.getbalance(); balance+=1000; deposit.setbalance( balance ); } 26

27 Синхронизация потоков: «теория» > Совместное использование двух схем синхронизации Синхронизация по ресурсам (управление ресурсами) > Объекты совместно используют ресурсы данных Синхронизация по событиям (управление временем) > Для совместной работы потоки уступают процессорное время друг другу и/или уведомляют друг друга о возможности продолжения работы 27

28 Синхронизация по ресурсам > Концепция монитора Thread1 (Hoare, 1974) > Взаимоисключающая блокировка (mutually exclusive lock mutex) > Фактически, synchronizedобъекты реализуют семантику монитора Thread 1 вошел в монитор Monitor Synchronized object Thread 2 ожидает монитор Thread2 28

29 Синхронизация «ожидание-уведомление» > Методы класса Object > Можно вызывать только из synchronized-методов public final void wait() public final void notify() public final void notifyall() Сообщает вызывающему потоку, что нужно уступить монитор и переходить в режим ожидания Есть также формы, позволяющие задать период времени ожидания Пробуждает первый поток, который вызвал wait(), на том же объекте Пробуждает все потоки, вызвавшие wait(), на том же объекте. Порядок выполнения определяется приоритетом 29

30 Синхронизация «ожидание-уведомление» > Ожидание потоком выполнения условия synchronized void oncondition() { try { } while(!conditionflag ) { } wait(); // Блокировка потока catch( InterruptedException e ) {... } // Действия при разблокированном потоке... } 30

31 Синхронизация «ожидание-уведомление» > Извещение потока (потоков) о выполнении условия synchronized void notifyoncondition() { } conditionflag = true; notify(); // для разблокировки одного ждущего потока synchronized void notifyoncondition() { conditionflag = true; потоков } notifyall(); // для разблокировки всех ждущих 31

32 Синхронизация «ожидание-уведомление» > Пример1: один поток ожидает, другой поток уведомляет Demo: ThreadWaitNotify1Sample > Пример2: потоки взаимно ожидают и уведомляют друг друга Demo: ThreadWaitNotify2Sample 32

33 Demo: ThreadDeadlockSample Многопоточное программирование: основы Взаимная блокировка потоков > Два потока имеют циклическую зависимость от пары синхронизированных объектов > Трудна для отладки > происходит редко > может включать больше двух потоков Thread1 Monitor A Data object A Dead lock Thread2 Monitor B Data object B 33

34 Приостановка, возобновление и остановка потоков > Java 1.1 и более ранние версии > Thread.suspend() > Thread.resume() > Thread.stop() > Java2 > Механизм на основе Thread.wait() / Thread.notify() > Thread.interrupt() > 34

35 Почему в Java2 не используются методы suspend(), resume() и stop()? > Блокировки при приостановке потока методом suspend() не отменяются, поэтому могут оказаться заблокированы другие потоки > Метод resume() сам по себе безопасен, но не может использоваться без suspend() > Нарушение целостности данных > Если поток останавливается методом stop() в процессе модификации каких-либо данных, эти данные могут оказаться разрушенными 35

36 Потоки-демоны > Не препятствуют завершению работы виртуальной машины > Если поток-демон создает другие потоки, они тоже являются демонами > Изменить статус потока-демона, превратив его в обычный поток, нельзя! > Поток можно сделать демоном в любой момент, используя метод setdaemon() public final void Thread.setDaemon() 36

37 Исполнение потоков по расписанию > Класс Timer > Предоставляет возможность выполнить задание в через некоторое время в отдельном потоке > Задания могут выполняться многократно > Каждый класс Timer владеет потоком, на котором исполняются все задания > Класс TimerTask > Абстрактный класс с абстрактным методом run() > Задача по расписанию определяется расширением TimerTask и переопределением run() 37

38 Demo: ThreadTimerSample Многопоточное программирование: основы class TimerReminder { Timer timer; Исполнение потоков по расписанию public TimerReminder( int seconds ) { timer = new Timer(); timer.schedule( new RemindTask(), seconds*1000 ); } class RemindTask extends TimerTask { public void run() { System.out.println( "Time's up!" ); timer.cancel(); // Terminate the timer thread } } 38 }

39 Многопоточное программирование Осталось за рамками > Группы потоков > Подробности взаимодействия потоков с использованием механизма wait/notify > Новые возможности поддержки параллельного программирования в Java > java.util.concurrent.* > java.util.concurrent.atomic.* > java.util.concurrent.locks.* 39

40 Многопоточное программирование Дополнительные источники и ссылки > Doug Lea. Concurrent Programming in Java > Сайт Евгения Матюшкина > 40

41 Q&A

Программирование на языке Java

Программирование на языке Java Теория и технология Программирование на языке Java Лекция 13. (продолжение) Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Синхронизация потоков Имеется две схемы синхронизации Синхронизация

Подробнее

Обеспечение эффективной многопоточности Java приложений

Обеспечение эффективной многопоточности Java приложений Обеспечение эффективной многопоточности Java приложений Андрей Дмитриев andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru/ 2008 Copyright (C) 2000-2008 Sun Microsystems, Inc. All rights reserved. Программа

Подробнее

Разработка многопоточных приложений на Java

Разработка многопоточных приложений на Java Разработка многопоточных приложений на Java Алексей Владыкин 7 ноября 2012 Алексей Владыкин Многопоточность в Java 7 ноября 2012 1 / 23 1 Общие сведения о параллелизме 2 Управление потоками 3 Синхронизация

Подробнее

Многопоточное программирование на Java. Беркунский Е.Ю., кафедра ИУСТ, НУК

Многопоточное программирование на Java. Беркунский Е.Ю., кафедра ИУСТ, НУК Многопоточное программирование на Java Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Что позволяет делать более быстрый компьютер? Существующие задачи решаются быстрее

Подробнее

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

Многопоточность в Java: основы Многопоточность в Java: основы Алексей Владыкин 27 ноября 2015 Алексей Владыкин Многопоточность (1) 27 ноября 2015 1 / 24 1 Общие сведения о параллелизме 2 Управление потоками 3 Синхронизация потоков 4

Подробнее

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

Многопоточность в Java: основы Многопоточность в Java: основы Алексей Владыкин 17 ноября 2014 Алексей Владыкин Многопоточность (1) 17 ноября 2014 1 / 24 1 Общие сведения о параллелизме 2 Управление потоками 3 Синхронизация потоков 4

Подробнее

Концепции языков программирования

Концепции языков программирования Параллельность 1 Введение 2 3 Потоки в языке Java Потоки в языке C# Введение Параллельность может возникать на четырех уровнях Уровень машинных инструкций Уровень инструкций высокоуровневого языка программирования

Подробнее

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

1. Многопоточное программирование 1. Многопоточное программирование В отличие от большинства других машинных языков, Java обеспечивает встроенную поддержку для многопоточного программирования. Многопоточная программа содержит две и более

Подробнее

Основы программирования на Java. Исключения

Основы программирования на Java. Исключения Основы программирования на Java Исключения Программа Классы и объекты в Java: основные сведения Управление памятью для ссылочных типов Реализация наследования в Java Пакеты как механизм реализации пространств

Подробнее

Программирование на Java

Программирование на Java Лекция 12. Потоки выполнения. Синхронизация 20 апреля 2003 года Авторы документа: Николай Вязовик (Центр Sun технологий МФТИ) Евгений Жилин (Центр Sun технологий МФТИ) < gene@itc.mipt.ru>

Подробнее

СПб АУ НОЦНТ РАН. Java

СПб АУ НОЦНТ РАН. Java СПб АУ НОЦНТ РАН Java 07 26.04.2016 1 / 11 InterruptedException try { Thread.sleep(100); catch (InterruptedException e) { //? 2 / 11 InterruptedException. Причина Причина: вызов метода interrupt на объекте

Подробнее

Классы, объекты и пакеты в Java

Классы, объекты и пакеты в Java Классы, объекты и пакеты в Java Алексей Владыкин 3 октября 2012 Алексей Владыкин Классы, объекты и пакеты в Java 3 октября 2012 1 / 42 1 Основы ООП 2 Объявление класса 3 Использование класса 4 Наследование

Подробнее

Параллельные вычисления

Параллельные вычисления САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Параллельные вычисления Создание многопоточных Java-программ Невытесняющая многозадачность на примере SystemC Михаил Моисеев Санкт-Петербург

Подробнее

Реализация параллелизма с использованием «эффективных объектов»

Реализация параллелизма с использованием «эффективных объектов» Реализация параллелизма с использованием «эффективных объектов» Решение задач организации параллелизма приложения происходит традиционно, применяя вытесняющую многозадачность. Такая схема целесообразна,

Подробнее

Классы, объекты и пакеты в Java

Классы, объекты и пакеты в Java Классы, объекты и пакеты в Java Алексей Владыкин 30 сентября 2013 Алексей Владыкин Классы, объекты и пакеты в Java 30 сентября 2013 1 / 35 1 Основы ООП 2 Классы 3 Наследование 4 Пакеты Алексей Владыкин

Подробнее

Ключевые слова языка С#

Ключевые слова языка С# 1 abstract, см. также 11, 55 2 as, см. также 37 Ключевые слова языка С# Модификатор abstract используется при объявлении класса, метода или свойства. Использование модификатора abstract в объявлении класса

Подробнее

Вступительное слово и обзор Java технологии

Вступительное слово и обзор Java технологии Вступительное слово и обзор Java технологии Евгений Беркунский, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Что такое Java? Язык программирования Платформа: Аппаратная Операционная: Windows,

Подробнее

Приблизительные вопросы к зачёту (1 семестр) по дисциплине «СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ»

Приблизительные вопросы к зачёту (1 семестр) по дисциплине «СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ» Приблизительные вопросы к зачёту (1 семестр) по дисциплине «СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ» Тема 1. Введение в технологию Java Java как платформа, история создания. Среда разработки. Этапы создания

Подробнее

Абстрактные классы и методы

Абстрактные классы и методы Абстрактные классы и методы Абстрактные методы Абстрактные классы Расширение абстрактных классов Интерфейсы «Множественное наследование» в Java Вложенные интерфейсы Абстрактные классы и методы В ряде ситуаций

Подробнее

Понятия «процесс» и «поток»

Понятия «процесс» и «поток» Процессы и потоки Понятия «процесс» и «поток» Процесс (задача) - программа, находящаяся в режиме выполнения. Потоќ выполне ния (thread нить) наименьшая часть программы, исполнение которой может быть назначено

Подробнее

Содержание. Глава 1 Введение 21. Глава 2 Грамматика 29. Глава 3 Лексическая структура 33. Предисловие к Java SE 8 Edition 19

Содержание. Глава 1 Введение 21. Глава 2 Грамматика 29. Глава 3 Лексическая структура 33. Предисловие к Java SE 8 Edition 19 Содержание Предисловие к Java SE 8 Edition 19 Глава 1 Введение 21 1.1. Организация книги 22 1.2. Примеры программ 25 1.3. Обозначения 26 1.4. Связь с предопределенными классами и интерфейсами 26 1.5. Литература

Подробнее

В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний:

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

Подробнее

Простейшая программа Hello, world!

Простейшая программа Hello, world! Простейшая программа Hello, world! // System.out.println("Привет, мир!"); Обязательные требования: 1) Имя файла, содержащего код программы, должно совпадать с именем класса 2) Файл должен иметь расширение.java

Подробнее

Методические указания для выполнения лабораторных работ по дисциплине «Объектно-ориентированный анализ и программирование»

Методические указания для выполнения лабораторных работ по дисциплине «Объектно-ориентированный анализ и программирование» МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Владимирский государственный университет имени Александра Григорьевича

Подробнее

1. Аннотация. 2. Цели освоения дисциплины

1. Аннотация. 2. Цели освоения дисциплины 1. Аннотация Курс направлен на формирование и развитие у студентов практических навыков программирования на Java и приобретение ими необходимого опыта для реализации проектов, связанных с вычислениями

Подробнее

Процессы и потоки. Операционные системы

Процессы и потоки. Операционные системы Процессы и потоки Операционные системы Лекция 2 Ульяновск, УлГТУ, кафедра «Информационные системы» 1 / 12 Модель процесса Четыре программы, работающие в многозадачном режиме а); концептуальная модель четырех

Подробнее

Секция 3. Компьютерная инженерия 79

Секция 3. Компьютерная инженерия 79 Секция 3. Компьютерная инженерия 79 УДК 004.051 А.В. Зотов, А.А. Бугаенко, С.В. Теплинский, Ю.В. Потапов Донецкий национальный технический университет г. Донецк Кафедра компьютерной инженерии E-mail: andrey.bugaenko.1992@gmail.com

Подробнее

Вариант 2 #1. Вариант Что выведет программа? class Base { Base() { System.out.print("Base"); public class Alpha extends Base {

Вариант 2 #1. Вариант Что выведет программа? class Base { Base() { System.out.print(Base); public class Alpha extends Base { Вариант 2. 1. Что выведет программа? Вариант 2 #1 class Base { Base() { System.out.print("Base"); public class Alpha extends Base { new Alpha(); /* Line 12 */ new Base(); /* Line 13 */ a. Base b. BaseBase

Подробнее

Разработка многопоточных приложений на Java

Разработка многопоточных приложений на Java Разработка многопоточных приложений на Java Алексей Владыкин 21 ноября 2012 Алексей Владыкин Многопоточность в Java 21 ноября 2012 1 / 25 1 Атомарные типы 2 Примитивы синхронизации 3 Коллекции 4 Executors

Подробнее

Многопоточность в Java: средства стандартной библиотеки

Многопоточность в Java: средства стандартной библиотеки Многопоточность в Java: средства стандартной библиотеки Алексей Владыкин 24 ноября 2014 Алексей Владыкин Многопоточность (2) 24 ноября 2014 1 / 28 1 Атомарные типы 2 Примитивы синхронизации 3 Коллекции

Подробнее

Примитивы синхронизации

Примитивы синхронизации Примитивы синхронизации 2011 В чем основная проблема программных методов взаимоисключения? Невозможно гарантировать неразрывность выполнения отдельных действий: Программа может прерваться в любой момент

Подробнее

Разработка многопоточных приложений на Java

Разработка многопоточных приложений на Java Разработка многопоточных приложений на Java Алексей Владыкин 2 декабря 2013 Алексей Владыкин Многопоточность в Java 2 декабря 2013 1 / 27 1 Атомарные типы 2 Примитивы синхронизации 3 Коллекции 4 Executors

Подробнее

public class Test { public static void main(string args[]) { B b = new B(); System.out.println("x = " + b.getresult(0, 1)); } }

public class Test { public static void main(string args[]) { B b = new B(); System.out.println(x =  + b.getresult(0, 1)); } } Вариант 1. 1. Какой результат выполнения программы: Вариант 1 #1 class A { final public int getresult(int a, int b) { return 0; class B extends A { public int getresult(int a, int b) { return 1; public

Подробнее

Операционные системы:

Операционные системы: Нижегородский государственный университет им. Н.И.Лобачевского Факультет Вычислительной математики и кибернетики Операционные системы: аспекты параллелизма Синхронизация-1 Линёв А.В. Тема обсуждения При

Подробнее

Параллельное выполнение

Параллельное выполнение 21 Параллельное выполнение До настоящего момента мы занимались последовательным программированием, при котором все действия в программе выполняются одно за другим. Последовательное программирование способно

Подробнее

Теоретические вопросы

Теоретические вопросы МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ» Спеціальність 6.040301 Прикладна математика Дисципліна «Програмування» Модульна контрольна робота

Подробнее

Концепции языков программирования

Концепции языков программирования Объектно-ориентированные языки программирования Темы 1 История 2 3 4 5 История Абстракция данных: SIMULA 67 (1962 1967) Спроектирован в Норвегии Нигардом и Далем, главным образом, для моделирования сложных

Подробнее

Тема 2.1 Пакетирование, наследование и полиморфизм

Тема 2.1 Пакетирование, наследование и полиморфизм Тема 2.1 Пакетирование, наследование и полиморфизм Наследование в C++ Наследование классов мощная возможность в объектноориентированном программировании. Оно позволяет создавать производные классы (классы

Подробнее

6. Предоставляют пользователю/ям возможности интерактивной работы одновременно с несколькими приложениями 1) пакетные операционные системы

6. Предоставляют пользователю/ям возможности интерактивной работы одновременно с несколькими приложениями 1) пакетные операционные системы Модуль 3. УПРАВЛЕНИЕ ПРОЦЕССАМИ 1. Распределяет процессорное время между несколькими одновременно существующими в системе процессами, а также занимается созданием и уничтожением процессов, обеспечивает

Подробнее

Лабораторная работа 3

Лабораторная работа 3 Лабораторная работа 3 Работа с потоками Теоретические сведения C# поддерживает параллельное выполнение кода через многопоточность. Поток это независимый путь исполнения, способный выполняться одновременно

Подробнее

А. В. Гаврилов. Объектно-ориентированное программирование. Вопросы к экзамену

А. В. Гаврилов. Объектно-ориентированное программирование. Вопросы к экзамену МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ АКАДЕМИКА С.П.КОРОЛЕВА

Подробнее

ПОСТРОЕНИЕ СЛУЖБЫ СИНХРОНИЗАЦИИ ПРОЦЕССОВ ЦИКЛА РЕАЛЬНОГО ВРЕМЕНИ

ПОСТРОЕНИЕ СЛУЖБЫ СИНХРОНИЗАЦИИ ПРОЦЕССОВ ЦИКЛА РЕАЛЬНОГО ВРЕМЕНИ Наукові праці ДонНТУ 131 Проблеми моделювання 2002 ПОСТРОЕНИЕ СЛУЖБЫ СИНХРОНИЗАЦИИ ПРОЦЕССОВ ЦИКЛА РЕАЛЬНОГО ВРЕМЕНИ Иванов А.Ю., Круглый А.A. Кафедра ЭВМ ДонГТУ ai@cs.dgtu.donetsk.ua Abstract Ivanov A.Y.,Krugluy

Подробнее

Многопоточность в Java: средства стандартной библиотеки

Многопоточность в Java: средства стандартной библиотеки Многопоточность в Java: средства стандартной библиотеки Алексей Владыкин 4 декабря 2015 Алексей Владыкин Многопоточность (2) 4 декабря 2015 1 / 27 1 Атомарные типы 2 Примитивы синхронизации 3 Коллекции

Подробнее

Паттерны проектирования

Паттерны проектирования Паттерны проектирования Введение Что такое «хороший дизайн» Точного универсального ответа на этот вопрос нет Есть стандартные решения для определенных задач паттерны Предложены хорошими специалистами Проверены

Подробнее

Введение 17 Глава 1. Основы Java

Введение 17 Глава 1. Основы Java Введение 17 Структура книги 20 Основные навыки и понятия 20 Упражнения для самопроверки 20 Обращение к знатоку 20 Примеры для опробования 20 Навыки программирования 20 Необходимое программное обеспечение

Подробнее

Основы ОС Unix Программирование нитями с использованием POSIX Pthreads

Основы ОС Unix Программирование нитями с использованием POSIX Pthreads Основы ОС Unix Программирование нитями с использованием POSIX Pthreads Основы ОС Unix 17.4.08 Слайд 1 из 34 Сегодня: многопоточное программирование Что такое нити (threads) Введение в параллельное программирование

Подробнее

Об авторе 17 О техническом редакторе 17

Об авторе 17 О техническом редакторе 17 Об авторе 17 О техническом редакторе 17 Введение 18 Эволюция Java 18 Java SE 8 21 Структура книги 21 Основные навыки и понятия 21 Вопросы и упражнения для самопроверки 21 Вопросы к эксперту 22 Упражнения

Подробнее

Понятие процесса. Состояния процесса. Диспетчеризация.

Понятие процесса. Состояния процесса. Диспетчеризация. Занятие 6. Понятие процесса. Состояния процесса. Диспетчеризация. План занятия. 1. Процесс. Классификация процессов. 2. Ресурсы. Классификация ресурсов. 3. Управление процессами. 4. Планирование процессов.

Подробнее

Теория и технология программирования. Основы программирования на языке Java. Классы и объекты

Теория и технология программирования. Основы программирования на языке Java. Классы и объекты Теория и технология программирования Основы программирования на языке Java Классы и объекты 1 Программа Классы и объекты в Java: основные сведения Управление памятью для ссылочных типов Реализация наследования

Подробнее

Планирование процессов в ОС Windows NT

Планирование процессов в ОС Windows NT Планирование процессов в ОС Windows NT Свойства 1) Процессы Windows NT реализованы в форме объектов, и доступ к ним осуществляется посредством службы объектов. 2) Процесс Windows NT имеет многонитевую

Подробнее

Объекты, классы и пакеты в Java

Объекты, классы и пакеты в Java Объекты, классы и пакеты в Java Алексей Владыкин 22 сентября 2014 Алексей Владыкин Объекты, классы и пакеты в Java 22 сентября 2014 1 / 37 1 Основы ООП 2 Пакеты 3 Классы 4 Наследование Алексей Владыкин

Подробнее

ОБЗОР ОСОБЕННОСТЕЙ ЯЗЫКА ПРОГРАММИРОВАНИЯ KOTLIN.

ОБЗОР ОСОБЕННОСТЕЙ ЯЗЫКА ПРОГРАММИРОВАНИЯ KOTLIN. УДК 004.432 Колмакова Е.Н., студентка 3 курс, факультет «Информационные системы и технологии» Поволжский Государственный Университет Телекоммуникаций и Информатики Россия, г. Самара ОБЗОР ОСОБЕННОСТЕЙ

Подробнее

Операционные системы. Процессы и потоки (нити).

Операционные системы. Процессы и потоки (нити). Операционные системы Лекция 2 Процессы и потоки (нити). 2.1 Процессы 2.1.1 Понятие процесса Процесс (задача) - программа, находящаяся в режиме выполнения. С каждым процессом связывается его адресное пространство,

Подробнее

С каждым процессом связывается его адресное пространство, из которого он может читать и в которое он может писать данные.

С каждым процессом связывается его адресное пространство, из которого он может читать и в которое он может писать данные. 4.1 Процессы 4.1.1 Понятие процесса Процесс (задача) - программа, находящаяся в режиме выполнения. С каждым процессом связывается его адресное пространство, из которого он может читать и в которое он может

Подробнее

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ 010501 Федеральное государственное образовательное учреждение высшего профессионального образования «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» Факультет математики,

Подробнее

Введение в объектно-ориентированное программирование.

Введение в объектно-ориентированное программирование. Лабораторная работа 12 Введение в объектно-ориентированное программирование. Цель работы. Изучение основ объектно-ориентированного программирования на языке Java. Содержание работы. В работе рассматриваются

Подробнее

Платформа Java SE: введение

Платформа Java SE: введение Платформа Java SE: введение Андрей Дмитриев andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru/ 2008 Copyright (C) 2000-2008 Sun Microsystems, Inc. All rights reserved. Программа Платформа JavaSE Язык

Подробнее

Операционные системы:

Операционные системы: Нижегородский государственный университет им. Н.И.Лобачевского Факультет Вычислительной математики и кибернетики Операционные системы: аспекты параллелизма Процессы и потоки Линёв А.В. Тема обсуждения

Подробнее

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы.

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. 1. Статическая (static) переменная класса Добавим в определение класса статическую переменную: private: // double x;

Подробнее

Jamie Jaworski Java 2 Certification Chapter 7 Garbage Collection

Jamie Jaworski Java 2 Certification Chapter 7 Garbage Collection Раздел 7 Сборка мусора Цели Этот раздел поможет Вам подготовиться к экзамену, раскрывая следующие темы: Вы должны знать, что представляет собой сборка мусора и как она работает. Знать когда объект становится

Подробнее

Качество кода. Владимир Ярославский Инженер-программист. 11 декабря 2008 Sun Microsystems, Inc.

Качество кода. Владимир Ярославский Инженер-программист. 11 декабря 2008 Sun Microsystems, Inc. Качество кода Владимир Ярославский Инженер-программист 11 декабря 2008 Sun Microsystems, Inc. 1 Что будем улучшать Производительность Читаемость Ясность Дизайн 2 Доступ к другому коду Классы: package Атрибуты:

Подробнее

Операционная система FX-RTOS

Операционная система FX-RTOS Операционная система FX-RTOS интерфейса HAL Версия 2.2 Содержание Введение... 3 Об этом руководстве... 3 Терминология... 3 Формат описания функций API... 3 Интерфейсы HAL... 5 Управление прерываниями...

Подробнее

Ответы на вопросы экзамена по курсу «Языки программирования»

Ответы на вопросы экзамена по курсу «Языки программирования» ы на вопросы экзамена по курсу «Языки программирования» 09.01.2016 В ответах курсивом выделены необязательные пояснения, которые можно опустить (особенно на экзамене) Вариант 1 Задача 1-1 Объясните, что

Подробнее

Современные технологии программирования (часть 2)

Современные технологии программирования (часть 2) Гуляев Г.М. Современные технологии программирования (часть 2) Лекция 4. ООП на языке Scala Курс лекций для студентов АлтГТУ LOGO Классы В отличие от java декларация public не используется. Все классы в

Подробнее

Примитивы синхронизации

Примитивы синхронизации Примитивы синхронизации Мьютексы На примере boost: mutex recursive_mutex timed_mutex recursive_timed_mutex shared_mutex spin_mutex mutex && recursive_mutex Функции: Захват: void lock(); Попытаться захватить:

Подробнее

По выполнению лабораторных работ по курсу «Технологии программирования»

По выполнению лабораторных работ по курсу «Технологии программирования» Методические указания По выполнению лабораторных работ по курсу «Технологии программирования» Лабораторная работа «Разработка графического пользовательского интерфейса (GUI) для редактирования списка записей»

Подробнее

Параллелизм. Многопоточность

Параллелизм. Многопоточность Параллелизм Многопоточность Зачем создавать параллельные системы? Природные ограничения Невозможно бесконечно наращивать быстродействие одноядерных процессоров. Пример 1 такт 4 ГГц процессора 0.25 нс.

Подробнее

1. ЦЕЛИ, ЗАДАЧИ И СВЕДЕНИЯ О СОДЕРЖАНИИ ДИСЦИПЛИНЫ Цели и задачи дисциплины: 1.2. Требования к уровню освоения содержания курса

1. ЦЕЛИ, ЗАДАЧИ И СВЕДЕНИЯ О СОДЕРЖАНИИ ДИСЦИПЛИНЫ Цели и задачи дисциплины: 1.2. Требования к уровню освоения содержания курса Рабочая программа дисциплины "Современные системы программирования" составлена в соответствии с требованиями к обязательному минимуму содержания основной образовательной программы подготовки информатиков

Подробнее

Функции ref out определении вызове Main()

Функции ref out определении вызове Main() Функции Функции представляют собой блоки кода, позволяющие выполнять одни и те же операции над различными значениями данных. Функции определяются один раз и могут вызываться из любой точки приложения.

Подробнее

10 SFC для управления прерываниями с задержкой

10 SFC для управления прерываниями с задержкой 10 SFC для управления прерываниями с задержкой 10.1 Управление прерываниями с задержкой Определение После того как Вы вызвали SFC 32 SRT_DINT, операционная система по истечении заданного времени задержки

Подробнее

UNIX. Лекция 4 UNIX. Л.4 1

UNIX. Лекция 4 UNIX. Л.4 1 UNIX Лекция 4 UNIX. Л.4 1 ПРОЦЕССЫ ОС UNIX Процесс - это задание в ходе его выполнения. П - образ программы, включающий отображение в памяти исполняемого файла, полученного в ходе компиляции, сегментов

Подробнее

Массивы. В ЯЗЫКЕ программирования Java массивы являются объектами ( 4.3.1), создаются динамически ГЛАВА 10

Массивы. В ЯЗЫКЕ программирования Java массивы являются объектами ( 4.3.1), создаются динамически ГЛАВА 10 ГЛАВА 10 Массивы В ЯЗЫКЕ программирования Java массивы являются объектами ( 4.3.1), создаются динамически и могут присваиваться переменным типа Object ( 4.3.2). Все методы класса Object можно вызывать

Подробнее

Программирование на языке Java

Программирование на языке Java Теория и технология программирования Программирование на языке Java Лекция 3. Проектирование классов в Java Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Общий базовый класс В языке Java

Подробнее

А. В. Гаврилов. Объектно-ориентированное программирование. Электронные тесты промежуточного контроля знаний

А. В. Гаврилов. Объектно-ориентированное программирование. Электронные тесты промежуточного контроля знаний МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ АКАДЕМИКА С.П.КОРОЛЕВА

Подробнее

Основы объектноориентированного. программирования (ООП)

Основы объектноориентированного. программирования (ООП) Основы объектноориентированного программирования (ООП) Объект и класс Основными элементами программы являются не переменные и методы (процедуры), а объекты. Объекты это программные конструкции, включающие

Подробнее

Антивирус Касперского Основные параметры защиты.

Антивирус Касперского Основные параметры защиты. Основные параметры защиты http://support.kaspersky.ru/kav2012/ecourse Расширенная настройка программы В настоящем разделе представлена подробная информация обо всех компонентах программы, в том числе описание

Подробнее

Разработка API в Java-проекте: как оказывать влияние на людей и не приобрести врагов

Разработка API в Java-проекте: как оказывать влияние на людей и не приобрести врагов Разработка API в Java-проекте: как оказывать влияние на людей и не приобрести врагов Чашников Николай программист JetBrains Nikolay.Chashnikov@jetbrains.com Как возникает API class B class A Как возникает

Подробнее

Глава 8. Наследование: проблемы и альтернативы. Интерфейсы. Композиция

Глава 8. Наследование: проблемы и альтернативы. Интерфейсы. Композиция Глава 8. Наследование: проблемы и альтернативы. Интерфейсы. Композиция Проблемы множественного наследования классов. Интерфейсы Достаточно часто требуется совмещать в объекте поведение, характерное для

Подробнее

Операционные системы. Взаимодействие между процессами.

Операционные системы. Взаимодействие между процессами. Операционные системы Лекция 3 Взаимодействие между процессами. 3.1 Взаимодействие между процессами Ситуации, когда приходится процессам взаимодействовать: Передача информации от одного процесса другому

Подробнее

Создание иерархии исключений

Создание иерархии исключений Создание иерархии исключений Обработка исключений является удобным способом предотвращения аварийного завершения программы в случае попытки выполнения каких-либо некорректных действий. Для этого используется

Подробнее

Программа дисциплины

Программа дисциплины МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное учреждение высшего профессионального образования "Казанский (Приволжский) федеральный университет" Институт

Подробнее

Примитивы синхронизации

Примитивы синхронизации Примитивы синхронизации Калишенко Е.Л. ПОМИ 2014 Попытка 1 class LockOne implements Lock { // thread-local index, 0 or 1 private boolean[] flag = new boolean[2]; public void lock() { int i = ThreadID.get();

Подробнее

Программирование на JAVA

Программирование на JAVA Программирование на JAVA Владимир Юрьевич Романов, Московский Государственный Университет им. М.В.Ломоносова Факультет Вычислительной Математики и Кибернетики vromanov@cs.msu.su, vladimir.romanov@gmail.com

Подробнее

Увеличение модульности программного обеспечения на языке Java.

Увеличение модульности программного обеспечения на языке Java. Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Увеличение модульности программного обеспечения на языке Java. Курсовая работа студента

Подробнее

Платформа Java SE: введение

Платформа Java SE: введение Платформа Java SE: введение Андрей Дмитриев andrei.dmitriev@oracle.com Программа Платформа JavaSE. Язык Java. С чего начать? Вопросы и ответы. Платформа Java SE Почему платформа?

Подробнее

Ответы на вопросы экзамена по курсу «Языки программирования»

Ответы на вопросы экзамена по курсу «Языки программирования» ы на вопросы экзамена по курсу «Языки программирования» 19.01.2015 В ответах курсивом выделены необязательные пояснения, которые можно опустить (особенно на экзамене) Вариант 1 Задача 1-1 Что означает

Подробнее

Дедлоки в корпоративных системах

Дедлоки в корпоративных системах Дедлоки в корпоративных системах источники, влияние, управление Святослав Штумпф. Deadlock Dead = смертельный, lock = запор. 1. Простая проблема. Все понятно. 2. Как избежать - тоже все знают. a. Общество

Подробнее

1. Решение задачи взаимоблокировки ресурсов.

1. Решение задачи взаимоблокировки ресурсов. * 1. Решение задачи взаимоблокировки ресурсов. Взаимоблокировка возникает, когда две и более задач постоянно блокируют друг друга из-за того, что задача каждой из сторон блокирует ресурс, необходимый другой

Подробнее

Объектно-ориентированное

Объектно-ориентированное 10 Объектно-ориентированное программирование Большая часть профессиональных программ пишется на языках объектно-ориентированного программирования (Object-Oriented Programming, OOP), таких как Java, C#

Подробнее

Лекция 5. Система поддержки времени исполнения (Run-time system, RTS)

Лекция 5. Система поддержки времени исполнения (Run-time system, RTS) Лекция 5 Система поддержки времени исполнения (Run-time system, RTS) Содержание Что такое RTS Определение и примеры RTфункций Общие принципы проектирования и оптимизации RTS Механизмы управления памятью

Подробнее

ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ

ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 4 Языки программирования и многопоточность, конкурентный доступ Д.ф.-м.н., профессор А.Г. Тормасов Базовая кафедра «Теоретическая и Прикладная Информатика»,

Подробнее

Перехват и обработка ошибок Принципы обработки исключений Вложенные try-catch блоки Использование объекта исключения Генерирование исключений

Перехват и обработка ошибок Принципы обработки исключений Вложенные try-catch блоки Использование объекта исключения Генерирование исключений Перехват и обработка ошибок Принципы обработки исключений Вложенные try- блоки Использование объекта исключения Генерирование исключений Контролируемые и неконтролируемые исключения Создание пользовательских

Подробнее

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы ООП. С++. Вопросы для проверки и закрепления знаний. 1. Проанализируйте ранее разработанные Вами программы и ответьте на вопрос: в каких из них наблюдается слабая связь между структурой данных и функционированием

Подробнее

JAVA CANDIDATE CHECKLIST 1 / 8

JAVA CANDIDATE CHECKLIST 1 / 8 JAVA CANDIDATE CHECKLIST 1 / 8 SEVERAL QUESTIONS MAY IMPLY MORE THAN ONE CORRECT ANSWER I - ООP II - Java Fundamentals III - Java Collections IV - Java I/O V - XML VI - RDB concept VII - Networking # QUESTION

Подробнее

Параллелизм и транзакции. Денис С. Мигинский

Параллелизм и транзакции. Денис С. Мигинский Параллелизм и транзакции Денис С. Мигинский Параллелизм (concurrency) Параллелизм: способность системы одновременно выполнять несколько вычислений (computations), потенциально (но не обязательно) взаимодействующих

Подробнее

Обобщения. Основные понятия

Обобщения. Основные понятия Обобщения. Основные понятия Термин «обобщение», по существу, означает параметризированный тип. Особая роль параметризированных типов состоит в том, что они позволяют создавать классы, структуры, интерфейсы,

Подробнее

Концепции процесса. Определение процесса

Концепции процесса. Определение процесса Концепции процесса Определение процесса 1 Процесс Впервые термин процесс для описания программы в ходе ее выполнения был использован в системе MULTICS (вторая половина 1960-х годов) Иногда заменяется термином

Подробнее

Планирование процессов

Планирование процессов Планирование процессов Многозадачность ОС является многозадачной, если она способна чередовать выполнение нескольких процессов, создавая видимость, что в каждый момент времени работает более одного процесса

Подробнее

Решение Структура приложения отражена на рисунке ниже:

Решение Структура приложения отражена на рисунке ниже: Задание 1. Создать 3 объекта формы один объект передатчик (PRD) и 2 объекта приемника (PRM1 и PRM2). Объект PRD с помощью командных кнопок должен иметь возможность передать сообщение 1 - му объекту приемнику

Подробнее