рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

СРЕДСТВА СИНХРОНИЗАЦИИ ПОТОКОВ

СРЕДСТВА СИНХРОНИЗАЦИИ ПОТОКОВ - раздел Программирование, Язык программирования Java Средства Синхронизации Потоков. Как И Во Всякой Многопроцессной Или Многопото...

СРЕДСТВА СИНХРОНИЗАЦИИ ПОТОКОВ. Как и во всякой многопроцессной или многопотоковой среде, в Java существует проблема синхронизации доступа к разделяемым ресурсам.

Примером такого ресурса является буфер в задаче производитель потребитель. Для опытных программистов отметим, что модель синхронизации, принятая в языке Java, опирается на концепцию монитора, предложенную в 70-е годы Бринк- ансеном. В Java-программах можно выделять критические интервалы, которые обозначаются ключевым словом synchronized.

Если критическим интервалом является метод, спецификатор synchronized помещается в его метода заголовок. Для превращения произвольной инструкции обычно это блок в критический интервал служит конструкция synchronized выражение инструкция где результатом выражения должен быть объект или массив. Выполнение критического интервала начинается только после получения потоком монопольного доступа к соответствующему объекту или массиву.

До наступления этого момента поток блокируется. class my buffer Object vec new Object 8 int ip 0 int ep 0 synchronized void insert Object item do if ip-ep 8 vec ip 7 item if ip-ep 1 notify Уведомить, если буфер был пуст return try wait catch InterruptedException e while true synchronized Object extract do if ip ep Object result vec ep 7 if ip-ep 7 notify Уведомить, если буфер был полон return result try wait catch InterruptedException e while true class my producer extends Thread int items to do my buffer the buffer my producer my buffer buf, int count super the buffer buf items to do count public void run while items to do 0 System.out.println producer to do items to do Integer item new Integer items to do items to do the buffer.insert item items to do- System.out.println Производитель заканчивает работу class my consumer extends Thread int items to do my buffer the buffer my consumer my buffer buf, int count super the buffer buf items to do count public void run while items to do 0 System.out.println consumer to do items to do Object item the buffer.extract System.out.println consumer got item items to do- System.out.println Потребитель заканчивает работу synchronized this notify Посылаем уведомление о завершении работы см. con.wait в main public class threaded3 public static void main String args throws InterruptedException my buffer the buffer new my buffer my producer prod new my producer the buffer, 40 my consumer con new my consumer the buffer, 40 Thread.currentThread .setPriority 5 prod.setPriority 4 Производитель получает более высокий приоритет con.setPriority 3 по сравнению с потребителем prod.start con.start synchronized con con.wait Ждем уведомления от производителя об окончании его работы System.out.println Производитель и потребитель закончили работу Вызов wait внутри критического интервала приводит к тому, что текущий поток уступает монопольное право на критический интервал и приостанавливается до тех пор, пока из какого-либо другого потока не будет сделан вызов notify или notifyAll. Хорошей иллюстрацией использования средств синхронизации потоков является упоминавшаяся только что программа Марка Уиллотсона.

Приведенная программа написана в очень хорошем, понятном стиле.

В методах insert и extract класса my buffer вызов wait содержится внутри бесконечного цикла. Дело в том, что вызов notify относится к объекту в целом.

Разбуженный объект должен проанализировать свое состояние и решить, что делать дальше.

Так, если заснул метод insert, то после возобновления работы необходимо проверить, что буфер уже не полон и добавление нового элемента стало возможным.

Если это не так, метод insert заснет вновь. Библиотеки классов JavaЕсли предоставить в распоряжение программиста только язык программирования и не снабдить его набором готовых модулей, предназначенных для решения самых распространенных задач, ему придется отвлекаться на множество мелких деталей.

Обычно все профессиональные системы разработки приложений на языке программирования C содержат в своем составе набор стандартных библиотечных функций или библиотеки классов. В комплекте со всеми средствами разработки Java поставляются достаточно развитые библиотеки классов, значительно упрощающие программирование. В этом разделе мы кратко расскажем о составе и назначении библиотек классов Java. Встроенные классы. В языке Java все классы происходят от класса Object, и, соответственно, наследуют методы этого класса.

Некоторые библиотеки классов подключаются автоматически, и мы будем называть их встроенными. К таким относится, в частности, библиотека с названием java.lang. Другие библиотеки классов вы должны подключать в исходном тексте приложения Java явным образом с помощью оператора import.

– Конец работы –

Эта тема принадлежит разделу:

Язык программирования Java

И тем не менее, уже довольно длительная история развития персональных компьютеров не знала ничего, подобного феномену Java. Что изменилось в мире в… Он стал доступен миллионам людей, далеких от технических проблем. Число пользователей Интернет по порядку величины уже не отличается от числа пользователей персональных компьютеров и…

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: СРЕДСТВА СИНХРОНИЗАЦИИ ПОТОКОВ

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Мобильность Java
Мобильность Java. Язык программирования С является мобильным. Это нужно понимать в том смысле, что имеется принципиальная возможность переноса программ C на различные платформы. Однак

ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА JAVA
ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА JAVA. Когда говорят об объектно-ориентированном языке программирования, предполагают поддержку трех механизмов инкапсуляция наследование полиморфизм. Инкапсуляция и наследова

НАСЛЕДОВАНИЕ. Интерфейсы
НАСЛЕДОВАНИЕ. Интерфейсы. Модель наследования в языке Java существенно отличается от модели C . Во-первых, в Java нет множественного наследования. Таким образом, для каждого дочернего класса

ЖИЗНЕННЫЙ ЦИКЛ ОБЪЕКТА
ЖИЗНЕННЫЙ ЦИКЛ ОБЪЕКТА. Объекты создаются с помощью оператора new. Инициализация объекта производится с помощью соответствующего конструктора. Эти операции разделить нельзя - за new всегда с

Массивы в Java
Массивы в Java. В языке Java присутствуют массивы. Эти массивы типизированы. Декларация Point myPoints описывает переменную myPoints как массив объектов типа Point. Завести массив определенного раз

КЛАСС THREAD И ИНТЕРФЕЙС RUNNABLE
КЛАСС THREAD И ИНТЕРФЕЙС RUNNABLE. Поток thread представляет собой отдельный поток управления в пределах процесса. Таким образом, у каждого потока есть начало, последовательность действий, т

Замещающие классы
Замещающие классы. Очень часто в наших приложениях вместо базовых типов переменных мы будем использовать объекты встроенных классов, которые называются замещающими классами wrapper classes. Ниже мы

Другие встроенные классы
Другие встроенные классы. Среди других встроенных классов отметим класс Math, предназначенный для выполнения математических операций, таких как вычисление синуса, косинуса и тангенса. Предус

Библиотека классов java.io
Библиотека классов java.io. В библиотеке классов java.io собраны классы, имеющие отношение к вводу и выводу данных через потоки. С использованием этих классов можно работать не только с пото

ТЕХНОЛОГИЧЕСКИЙ ЦИКЛ ОБРАБОТКИ JAVA-ПРОГРАММ
ТЕХНОЛОГИЧЕСКИЙ ЦИКЛ ОБРАБОТКИ JAVA-ПРОГРАММ. Технологический цикл подготовки, трансляции, редактирования внешних связей, тестирования, отладки и выполнения Java-программ тот же, что и для других и

СИСТЕМА КОМАНД JAVA-МАШИНЫ
СИСТЕМА КОМАНД JAVA-МАШИНЫ. проектировались таким образом, чтобы всячески способствовать компактификации кода. С другой стороны, формат команд Java-машины довольно прост обычно команды не имеют опе

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги