Главный поток программы это

Несмотря на то что главный поток создается автоматически при запуске программы, им можно управлять через объект Thread. Чтобы делать это, вы должны получить ссылку на него вызовом метода current-Thread (), который является общедоступным статическим (public static) методом класса Thread. Его общая форма выглядит следующим образом:

static Thread currentThread ()

Этот метод возвращает ссылку на поток, из которого он был вызван. Получив ссылку на главный поток, вы можете управлять им точно так же, как любым другим. Рассмотрим следующий пример:

// Управление главным потоком.
class CurrentThreadDemo public static void main(String args[]) Thread t = Thread.currentThread ();
System.out.println(«Текущий поток: » + t) ;
// изменить имя потока
t.setName(«Мой Thread»);
System.out.println(«После изменения имени: » + t) ;
try for(int n = 5; n > 0; n—) System.out.println(n);
Thread.sleep(1000);
>

ЧТО ТАКОЕ ПОТОК? [МЬЮТЕКС, СЕМАФОР]


>
catch (InterruptedException e) System.out.println(«Главный поток прерван»);
>
>
>

В этой программе ссылка на текущий поток (в данном случае — главный) получается вызовом currentThread (), и эта ссылка сохраняется в локальной переменной t. Далее программа отображает информацию о потоке. Программа вызывает setName () для изменения внутреннего имени потока. После этого информация о потоке отображается заново.

Далее в цикле печатается обратный отсчет с задержкой на 1 секунду после каждой строки. Пауза организуется вызовом метода sleep (). Аргумент sleep () задает период задержки в миллисекундах. Обратите внимание на блок try/catch вокруг цикла. Метод sleep () в Thread может возбудить InterruptException.

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

Текущий поток: Thread[main,5,main]
После изменения имени: Thread[My Thread,5,main]
5
4
3
2
1

Обратите внимание, что вывод генерируется, когда t используется в качестве аргумента для println (). Он отображает по порядку имя потока, его приоритет и имя его группы. По умолчанию имя главного потока — main. Его приоритет равен 5, что является значением по умолчанию, a main — также имя группы потоков, к которой относится данный.

Группа потоков — это структура данных, которая управляет состоянием набором потоков в целом. После того как имя потока изменено, t распечатывается вновь. На этот раз отображается новое имя потока.

Читайте также:
Программа dropbox для Андроид для чего

Давайте поближе взглянем на методы, определенные в Thread, которые используются в программе. Метод sleep () заставляет поток, из которого он был вызван, приостановить выполнение на указанное количество миллисекунд. Его общая форма выглядит так:

Потоки в Python за 5 минут

static void sleep(long миллисекунды) throws InterruptedException

Количество миллисекунд, на которое нужно приостановить выполнение, передается в параметре миллисекунды. Этот метод может возбуждать исключение Interrupted-Exception.

Метод sleep () имеет также вторую форму, показанную ниже, который позволяет задать период в миллисекундах и наносекундах:

static void sleep(long миллисекунды, long наносекунды) throws InterruptedException

Вторая форма может применяться только в средах, которые предусматривают задание временных периодов в наносекундах.

Как показано в предыдущей программе, вы можете установить имя потока, используя setName (). Получить имя потока можно вызовом getName () (эта процедура в программе не показана). Эти методы являются членами класса Thread и объявлены следующим образом: final void setName(String имя_потока) final String getName()

Здесь имя_потока указывает имя потока.

Источник: www.linkex.ru

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

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

Класс Thread

В Java функциональность отдельного потока заключается в классе Thread . И чтобы создать новый поток, нам надо создать объект этого класса. Но все потоки не создаются сами по себе. Когда запускается программа, начинает работать главный поток этой программы. От этого главного потока порождаются все остальные дочерние потоки.

С помощью статического метода Thread.currentThread() мы можем получить текущий поток выполнения:

public static void main(String[] args) < Thread t = Thread.currentThread(); // получаем главный поток System.out.println(t.getName()); // main >

По умолчанию именем главного потока будет main .

Для управления потоком класс Thread предоставляет еще ряд методов. Наиболее используемые из них:

  • getName() : возвращает имя потока
  • setName(String name) : устанавливает имя потока
  • getPriority() : возвращает приоритет потока
  • setPriority(int proirity) : устанавливает приоритет потока. Приоритет является одним из ключевых факторов для выбора системой потока из кучи потоков для выполнения. В этот метод в качестве параметра передается числовое значение приоритета — от 1 до 10. По умолчанию главному потоку выставляется средний приоритет — 5.
  • isAlive() : возвращает true, если поток активен
  • isInterrupted() : возвращает true, если поток был прерван
  • join() : ожидает завершение потока
  • run() : определяет точку входа в поток
  • sleep() : приостанавливает поток на заданное количество миллисекунд
  • start() : запускает поток, вызывая его метод run()
Читайте также:
Как сделать коллаж в программе photoshop

MnogoBlog

⛄как создать сайт на wordpress, настроить и оптимизировать wordpress

🎅MnogoBlog

Java Урок 45: ПОТОКИ, Thread, главный поток

MnogoBlog > Уроки по java > Java Урок 45: ПОТОКИ, Thread, главный поток

Java предлагает встроенную поддержку многопоточного программирования.
Многопоточная программа содержит две или более частей, которые могут выполняться одновременно. Каждая часть такой программы называется потоком (thread), и каждый поток задает отдельный путь выполнения.
Скачать исходники для статьи можно ниже

Когда программа Java стартует, немедленно начинает выполняться один поток.
Обычно этот поток называют главным потоком (main thread) программы, потому что это тот поток, который запускается вместе с вашей программой.
Запуск потока происходит в методе main:

public static void main(String args[]) < // здесь находится код, который выполняется в главном потоке // . >

Давайте подробнее разберем этот код.
public – означает, что метод публичный, соответственно java имеет доступ к этому методу при старте программы.
static – означает, что метод статичный, соответственно его можно вызвать без создания объектов, а при запуске программы еще не существует ни одного объекта.
void – означает, что программа не возвращает никаких значений, здесь это не надо.
main – просто название метода, в котором стартует главный поток.
String args[] – аргумент метода main. В подавляющем большинстве случаев никак не используется. Дело в том, что в языке Java разрешено использовать несколько методов с названием main() даже в одном классе. Поэтому по-настоящему главный метод содержит аргументы командной строки (String[] args). Таким образом, “String[] args”
служит для дополнительной идентификации метода main, который запускает главный поток.

Главный поток важен по двум причинам.

– Это поток, от которого порождаются все “дочерние” потоки.
– Часто он должен быть последним потоком, завершающим выполнение, так
как предпринимает различные завершающие действия.

Несмотря на то, что главный поток создается автоматически при запуске программы, им можно управлять через объект класса Thread. Для этого следует получить ссылку на него вызовом метода currentThread(), который является открытым статическим (public static) методом класса Thread. Его общая форма выглядит следующим образом:

Читайте также:
Какой программой открыть dicom

static Thread currentThread()

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

// Управление главным потоком, class CurrentThreadDemo < public static void main(String args[]) < Thread t = Thread.currentThread(); System.out.println(«Текущий поток: » + t); // изменить имя потока t. setName («Мой ГЛАВНЫЙ ПОТОК»); System.out.println(«После изменения имени: » + t); >>

Ниже показан вывод этой программы:
Текущий поток: Thread[main,5,main] После изменения имени: Thread[Мой ГЛАВНЫЙ ПОТОК,5,main]

В этой программе ссылка на текущий поток (в данном случае — главный) получается вызовом метода currentThread(), и эта ссылка сохраняется в локальной переменной t. Далее программа отображает информацию о потоке. Программа вызывает метод setName() для изменения внутреннего имени потока. После этого информация о потоке отображается заново.

Обратите внимание на то, что вывод создается, когда переменная t используется в качестве аргумента для метода println(). Он отображает по порядку имя потока, его приоритет и имя его группы.

По умолчанию имя главного потока — main. Его приоритет равен 5, что является значением по умолчанию, a main — также имя группы потоков, к которой относится данный.

Группа потоков — это структура данных, которая управляет состоянием набора потоков в целом. После того, как имя потока изменено,
переменная t выводится вновь. На этот раз отображается новое имя потока.

Класс Thread определяет ряд методов, которые помогают управлять потоками.
Вот некоторые из них:

getName – метод, который позволяет получить имя потока
getPriority – метод, который позволяет получить приоритет потока
setName – метод, который позволяет изменить имя потока
setPriority – метод, который позволяет изменить приоритет потока
activeCount() – метод, который сообщает о количестве работающих потоков
sleep() – метод, который позволяет приостановить выполнение потока на заданное время

Метод sleep() заставляет поток, из которого он был вызван, приостановить выполнение на указанное количество миллисекунд. Его общая форма выглядит так:

static void sleep(long миллисекунды) throws InterruptedException

Количество миллисекунд, на которое нужно приостановить выполнение, передается в параметре миллисекунды. Этот метод может передать исключение InterruptedException, поэтому этот метод необходимо обернуть в конструкцию try catch.

Источник: mnogoblog.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru