Книга: Основы программирования на Java

10.2. Подпроцесс

10.2. Подпроцесс

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

class CurrentThreadDemo {
public static void main(String args[]) {
Thread t = Thread.currentThread();
t.setName("Moй подпроцесс");
System.out. println("текущий подпроцесс: " +1);
try {
for (int n = 5; n > 0; n--) {
System.out.println(" " + n);
Thread.sleep(1000);
}
}
catch (InterruptedException e) {
System.out.println("interrupted");
}
}

В этом примере текущий подпроцесс хранится в локальной переменной t. Затем мы используем эту переменную для вызова метода setName, который изменяет внутреннее имя подпроцесса на «My Thread» с тем, чтобы вывод программы был удобочитаемым. На следующем шаге мы входим в цикл, в котором ведется обратный отсчет от 5, причем на каждой итерации с помощью вызова метода Thread.sleep() делается пауза длительностью в 1 секунду. Аргументом для этого метода является значение временного интервала в миллисекундах. Обратите внимание — цикл заключен в try/catch блок. Дело в том, что метод Thread.sleep() может возбуждать исключение InterruptedException. Это исключение возбуждается в том случае, если какому-либо другому подпроцессу понадобится прервать данный подпроцесс. В данном примере мы в такой ситуации просто выводим сообщение о перехвате исключения. Ниже приведен вывод этой программы:

С:> java CurrentThreadDemo
текущий подпроцесс: Thread[Moй подпроцесс,5,main]
5
4
3
2
1

Обратите внимание на то, что в текстовом представлении объекта Thread содержится заданное нами имя легковесного процесса — Мой подпроцесс. Число 5 — это приоритет подпроцесса, оно соответствует приоритету по умолчанию, «main» — имя группы подпроцессов, к которой принадлежит данный подпроцесс.

Оглавление книги


Генерация: 0.737. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз