Page 65 - 4657
P. 65
} }
Зверніть увагу на те, що цикл усередині методу run виглядає
точно так само, як і в попередньому прикладі, тільки цього разу
він виконується в іншому підпроцесі. Підпроцес main за
допомогою оператора new Thread(this, "Demo Thread") створює
новий об'єкт класу Thread, причому перший параметр
конструктора - this - указує, що нам хочеться викликати метод
run поточного об'єкта. Потім ми викликаємо метод start, що
запускає підпроцес, що виконує метод run. Після цього
основний підпроцес (main) переводиться в стан чекання на три
секунди, потім виводить повідомлення і завершує роботу.
Другий підпроцес - “Demo Thread” - при цьому як і раніше
виконує ітерації в циклі методу run доти поки значення
лічильника циклу не зменшиться до нуля. Нижче показано, як
виглядає результат роботи цієї програми цієї програми після
того, як вона відробить 5 секунд.
С:\> java ThreadDemo
Thread created: Thread[Demo Thread,5,main]
5
4
3
exiting main thread
2
1
exiting child thread
Пріоритети підпроцесів
Якщо ви хочете домогтися від Java передбачуваного
незалежного від платформи поводження, вам належить
проектувати свої підпроцеси таким чином, щоб вони по своїй
волі звільняли процесор. Нижче приведений приклад із двома
підпроцесами з різними пріоритетами, що не поводяться
однаково на різних платформах. Пріоритет одного з підпроцесів
за допомогою виклику setPriority установлюється на два рівні
вище Thread. NORM_PRIORITY, тобто, що замовчується
пріоритету. В іншого підпроцесу пріоритет, навпаки, на два
63