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

Класс Thread

Читайте также:
  1. Dominant thread- доминирующая нить
  2. I – IV классы
  3. I. Организация класса.
  4. I. Психолого-педагогическая характеристика класса
  5. II. Классификация антисептических и дезинфицирующих средств.
  6. II. Классификация издержек обращения.
  7. II. Классификация, этиология, патогенез и гемодинамика

Методы этого класса представляют возможность запускать и управлять потоками исполнения:

- public void start() – производит запуск нового потока;

- public final void join() – если поток A вызывает этот метод у объекта Thread, представляющего поток B (threadB.join()), то выполнение потока A приостанавливается до тех пор, пока не закончит выполнение поток B;

- public static void yield() – поток, из которого вызван этот метод, временно приостанавливается, чтобы дать возможность выполняться другим потокам;

- public static void sleep(long millis) – поток, из которого вызван этот метод, перейдет в состояние "сна" на указанное количество миллисекунд, после чего сможет продолжить выполнение. При этом нужно учесть, что через время millis миллисекунд этому потоку может быть выделено процессорное время, а может, ему придется и подождать немного дольше. Можно сказать, что поток продолжит выполнение не раньше, чем через время millis миллисекунд.

Существует еще несколько методов, которые объявлены deprecated и рекомендуется их избегать. Это: suspend() – временно прекратить выполнение, resume() – продолжить выполнение (приостановленное вызовом suspend()), stop() – остановить выполнение потока.

При вызове метода stop() в потоке, который представляет этот объект Thread, будет брошена ошибка ThreadDeath. Этот класс унаследован от Error. Если ошибка не будет обработана в программе и, соответственно, произойдет прекращение работы потока, сообщение о ненормальном завершении выведено не будет, так как такое завершение рассматривается как нормальное. Если же в программе эта ошибка обрабатывается (например, для проведения каких-то дополнительных действий перед закрытием потока), то очень важно позаботиться о том, чтобы эта же ошибка была брошена дальше, чтобы поток действительно закончил свое выполнение. Класс ThreadDeath специально унаследован от Error, а не от Exception, так как очень часто используется перехват всех исключений класса Exception, что не позволит корректно остановить поток.

Также Thread позволяет выставлять такие свойства потока, как:

- Name – значение типа String, которое можно использовать для более наглядного обращения с потоками в группе;

- Daemon – выполнение программы не будет прекращено до тех пор, пока выполняется хотя бы один не daemon поток;

- Priority – определяет приоритет потока. В классе Thread определены константы, задающие минимальное и максимальное значения для приоритетов потока,– MIN_PRIORITY и MAX_PRIORITY, а также значение приоритета по умолчанию – NORM_PRIORITY.

Эти свойства могут быть изменены только до того момента, когда поток будет запущен, то есть вызван метод start() объекта Thread. Получить эти значения можно в любой момент жизни потока – и после его запуска, и после прекращения выполнения. Также можно узнать, в каком состоянии сейчас находится поток: вызовом методов isAlive() – выполняется ли еще, isInterrupted() – прерван ли.

 


Дата добавления: 2015-07-20; просмотров: 77 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Системные классы| В соавторстве с Робертом Блаем

mybiblioteka.su - 2015-2024 год. (0.005 сек.)