Книга: Основы программирования на 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» — имя группы подпроцессов, к которой принадлежит данный подпроцесс.
- 14.5.1. Использование подпроцесса
- 10.4. Приоритеты подпроцессов
- Четыре подпроцесса процесса продаж
- 3.3.2.3 Подпроцессы («Матрешки»)
- 9.3.3. Подпроцессы («Матрешки»)
- 10. МНОГОПОТОЧНОЕ ПРОГРАММИРОВАНИЕ
- Глава 4. Технология продаж
- Технология процесса продаж: авторский взгляд
- 14.5. Универсализация файловых имен
- 10.5. Синхронизация
- 5.4.4. Функции popen() и pclose()