основен поток
Когато се стартира Java програма, една нишка веднага започва да се изпълнява. Обикновено се нарича основна нишка на програмата, защото това е нишката, която работи заедно с вашата програма. Основната нишка е важна по две причини.
- Това е нишката, от която се генерират всички "дъщерни" нишки.
- Често трябва да бъде последната нишка, за да завърши изпълнението, тъй като изисква различни завършващи действия.
Въпреки че основната нишка се създава автоматично при стартиране на програмата, тя може да се контролира чрез обекта Thread. За да направите това, трябва да получите препратка към него, като извикате метода current-Thread(), който е публичен статичен метод на класа Thread. Общата му форма е следната:
статична нишка currentThread()
Този метод връща препратка към нишката, от която е извикан. След като имате връзка към основната нишка, можете да я управлявате както всяка друга нишка. Разгледайте следния пример:
// Управление на основната нишка. class CurrentThreadDemo public static void main(String args[]) Thread t = Thread.currentThread(); System.out.println("Текуща нишка: " + t) ; // промяна на името на нишката t.setName("Моята нишка"); System.out.println("След промяна на името: " + t) ; опитайте за (int n = 5; n> 0; n—) System.out.println(n); Thread.sleep(1000); > > catch (InterruptedException e) System.out.println("Главната нишка е прекъсната"); > > >
Текуща нишка: Нишка[main,5,main] След промяна на името: Нишка[Моята нишка,5,main] 5 4 3 2 1
Имайте предвид, че изходът се генерира, когато t се използва като аргумент на println(). Той показва в ред името на нишката, нейния приоритет и нейното имегрупи. Името по подразбиране на основната нишка е main. Приоритетът му е 5, което е стойността по подразбиране, а main е и името на групата нишки, към която принадлежи този. Група нишки е структура от данни, която управлява състоянието на набор от нишки като цяло. След като името на потока бъде променено, t се отпечатва отново. Този път се показва новото име на нишката.
Нека разгледаме по-подробно методите, дефинирани в Thread, които се използват в програмата. Методът sleep() кара нишката, от която е извикан, да постави на пауза изпълнението за определения брой милисекунди. Общата му форма изглежда така:
static void sleep (дълги милисекунди) хвърля InterruptedException
Броят милисекунди за спиране на изпълнението се предава в параметъра за милисекунди. Този метод може да изведе Interrupted-Exception.
Методът sleep() също има втора форма, показана по-долу, която ви позволява да посочите период в милисекунди и наносекунди:
статичен празен сън (дълги милисекунди, дълги наносекунди) хвърля InterruptedException
Втората форма може да се използва само в среди, които изискват времеви периоди да бъдат посочени в наносекунди.
Както е показано в предишната програма, можете да зададете името на нишката с помощта на setName(). Можете да получите името на нишката, като извикате getName() (тази процедура не се показва в програмата). Тези методи са членове на класа Thread и се декларират по следния начин: final void setName(String thread_name) final String getName()