Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Видно также, что потоки исполняются без определенного порядка, случайным образом. Тем не менее, в среднем они движутся с одной скоростью, никто не отстает и не догоняет.
Введем в программу работу с приоритетами, расставим разные значения для разных потоков и посмотрим, как это скажется на выполнении. Изменяется только метод main().
public static void main(String s[]) { // Подготовка потоков
Thread t[] = new Thread[3]; for (int i=0; Kt.length; i++) {
t[i]=newThread(new ThreadTest(), "Thread "+i); t[i].setPriority(Thread.MIN_PRIORITY+ (Thread. MAX_PRIORI-TY-Thread.MlN_PRIORITY)/t.length*i); }
// Запуск потоков
for (int i=0; Kt.length; i++) { t[i].start();
System.out.println(t[i].getName()+" started");
}
формула вычисления приоритетов позволяет равномерно распреде-все допустимые значения для всех запускаемых потоков. На самом константа минимального приоритета имеет значение 1, максималь-
0^ г: -г
Лого Ю, нормального 5. Так что в простых программах можно явно поль рваться этими величинами и указывать в качестве, например, понижен цого приоритета значение 3. Результатом работы будет:
Thread |
0 |
started |
|
Thread |
1 |
started |
|
Thread |
2 |
started |
|
Thread |
2 |
counts |
0 |
Thread |
2 |
counts |
1 |
Thread |
2 |
counts |
2 |
Thread |
2 |
counts |
3 |
Thread |
2 |
counts |
4 |
Thread |
0 |
counts |
0 |
Thread |
1 |
counts |
0 |
Thread |
1 |
counts |
1 |
Thread |
1 |
counts |
2 |
Thread |
1 |
counts |
3 |
Thread |
1 |
counts |
4 |
Thread |
0 |
counts |
1 |
Thread |
0 |
counts |
2 |
Thread |
0 |
counts |
3 |
Thread |
0 |
counts |
4 |
Потоки, как и раньше, стартуют последовательно. Но затем мы видим, что чем выше приоритет, тем быстрее отрабатывает поток. Тем не менее, весьма показательно, что поток с минимальным приоритетом (Thread 0)все же получил возможность выполнить одно действие раньше, чем отработал поток с более высоким приоритетом (Thread 1). Это говорит о ^м, что приоритеты не делают систему однопоточной, выполняющей единовременно лишь один поток с наивысшим приоритетом. Напротив, Приоритеты позволяют одновременно работать над несколькими задачами сУчетом их важности.
Если увеличить параметры метода (выполнять 500000 вычислений, а не 50000, и выводить сообщение каждое 1000-е вычисление, а не 10000-е), 10 Можно будет наглядно увидеть, что все три потока имеют возможность поднять свои действия одновременно, просто более высокий приоритет позволяет выполнять их чаще.
Курс_______________________________________________________ Программирование на^и
Демон-потоки
Демон-потоки позволяют описывать фоновые процессы, КОТОр! нужны только для обслуживания основных потоков выполнения и не \,( гут существовать без них. Для работы с этим свойством существуют метот зетОаегтюп() и 1зОаетоп().