Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. В – 3. Финансы как отражение денежного потока.
  2. Виды постов наблюдений за уровнем загрязнения воздушного потока.
  3. ВНП по методу потока доходов
  4. Гидроэнергетика. В этой отрасли электроэнергия производится на Гидроэлектростанциях (ГЭС), использующих для этого энергию водного потока.
  5. Його значення та частка у міжнародних рекреаційних потоках і валютних прибутках від розвитку рекреаційно-туристичного господарства.
  6. Код завершения процесса
  7. Математическое ожидание, средний квадрат, дисперсия.
  8. Методы оптимизации денежного потока
  9. Общие понятия о строительных процессах и потоках.
  10. Ожидание

С помощью метода join вы можете выполнять ожидание завершения работы потока, для которой этот метод вызван.

Существует три определения метода join:

public final void join();public final void join(long millis);public final void join(long millis, int nanos);

Первый из них выполняет ожидание без ограничения во времени, для второго ожидание будет прервано принудительно через millis миллисекунд, а для третьего - через millis миллисекунд и nanos наносекунд. Учтите, что реально вы не сможете указывать время с точностью до наносекунд, так как дискретность системного таймера компьютера намного больше.


Описание проекта

Класс Sharing1

Класс самого приложения (апплета в данном случае, т.к. он расширяет класс JApplet).

Свойства

accessCount - счётчик доступов. Содержит количество обращений потокам с целью проверки равенства свойств count1 и count2 для выявления рассинхронизации.

isApplet – признак, что приложение является апплетом. Есть нюансы реализации в зависимости от этого, но в данном примере оно запускается не как апплет (в методе main устанавливается в false)

numCounters – количество объектов класса TwoCounter (по сути, количество работающих процессов)

numWatches – количество наблюдающих процессов.

S – массив процессов (объектов класса TwoCounter)

Методы

increment Access – увеличивает счётчик доступов и отображает его значение в соответствующем поле.

Класс TwoCounter

Наследует классу Thread, реализует пример процесса. В GUI содержит два текстовых поля для вывода значений свойств count1 и count2 и лейбл для отображения, равны ли они между собой или нет (при рассинхронизации потоков там появляется надпись “ Unsynched” – выводится в методе synchTest.

Свойства

started - признак, запущен ли процесс

count1, count2 – два счётчика, для иллюстрации многопоточности и синхронизации. Прикладного смысла не несут.

 

Методы

start – запускает поток. Вызывает метод старт родителя (суперкласса, т.е. Thread)

run – содержит действия, которые будут выполняться каждым запущенным потоком. Именно этот метод надо переопределить, чтобы указать, что же должен делать поток. В нём бесконечный цикл, в котором происходит увеличение счётчиков и блокировка потока (приостановка его действия) на 500 миллисекунд. Sleep обрамляется в try catch для обработки ситуации, когда поток аварийно завершится. В этом случае в консоль будет выведено сообщение.

synchTest – проверка синхронизации. По сути выполняется проверка, равны ли счётчики - count1 и count2. По идее, должны быть равны, но существует вероятность, что нет. Из-за того, что не разрулена синхронизация потоков. Точнее это будет в случае, если при выполнении sleep у TwoCounter будет выполнено run у Watcher.

init – инициализирует программу. Если приложение запущено как апплет (а в примере это НЕ так), то значения свойств numCounters и numWatchers определяются из переданных при загрузке страницы параметров. Если нет - то всё свойства получают значения по умолчанию.

Даале создаются процессы TwoCounter, создаётся GUI (панели, лейауты, назначение кнопкам листенеров и т.д.)

main – создаётся экземпляр класса Sharing1, указывается, что это не апплет, определяются свойства numCounters и numWatchers (если при запуске были указаны параметры, то из параметров, иначе 12 и 15 соответственно). Далее запускается GUI (статический метод run класса Console).

 




Дата добавления: 2014-12-19; просмотров: 36 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав