Содержание
java.util.Timer предоставляет возможность потокам планировать задачи для будущего выполнения в фоновом потоке. Задачи могут быть запланированы для одноразового выполнения или для повторного выполнения с регулярными интервалами.
Каждому объекту Timer соответствует один фоновый поток, который используется для последовательного выполнения всех задач таймера. Задачи таймера должны завершиться быстро. Если задача таймера занимает слишком много времени, она hogs поток выполнения задачи таймера. Это, в свою очередь, может задержать выполнение последующих задач, которые могут bunch up и выполнить в быстрой последовательности, когда (и если) оскорбительная задача, наконец, завершается.
После того, как последняя действующая ссылка на объект Timer исчезнет, и все нерешенные задачи завершат выполнение, поток выполнения задач таймера завершится изящно (и станет объектом сбора мусора ). Однако это может произойти как угодно долго.
По умолчанию поток выполнения задачи не запускается как поток демона , поэтому он может предотвратить завершение приложения. Если вызывающая сторона хочет быстро завершить поток выполнения задачи таймера, вызывающая сторона должна вызвать метод отмены таймера.
Если поток выполнения задачи таймера неожиданно завершается, например, из-за вызова его метода остановки , любая дальнейшая попытка запланировать задачу по таймеру приведет к исключению IllegalStateException , как если бы был вызван метод отмены таймера.
Этот класс thread-safe : несколько потоков могут совместно использовать один объект Timer без необходимости внешней синхронизации .
Вот простой пример
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
пакет ком . crunchify. учебные пособия ;
Импортировать Java. Util. Таймер ;
Импортировать Java. Util. TimerTask ;
/ **
* @author Crunchify
* /
общественности учебный класс CrunchifyTimerExample {
Таймер таймер ;
общественности статический недействительным main ( Строка [ ] аргументы ) {
Система. вне. println ( «Пример таймера запуска. Теперь подождите 10 секунд» ) ;
новый CrunchifyTimerExample ( 10 ) ;
Система. вне. println ( «ПРИМЕЧАНИЕ. Эта печать выполняется до таймера.» ) ;
}
общественности CrunchifyTimerExample ( int секунд ) {
Таймер таймер знак равно новый Таймер ( ) ;
// Планирование вызова NextTask () за 10 секунд.
таймер. график ( новый NextTask ( ) , секунд * 1000 ) ;
}
учебный класс NextTask продолжается TimerTask {
@Override
общественности недействительным запустить ( ) {
Система. вне. println ( «Прервана нить таймера!» ) ;
таймер. отмена ( ) ; // Завершить поток
}
}
}
|
Выход:
|
1
2
3
4
5
6
7
|
Пример работы таймера. Теперь ждать 10 сек.
ПРИМЕЧАНИЕ : это println выполняется до таймера .
Прекратить Таймер тему!
Исключение в нить Таймер-0 Java. яз. Исключение нулевого указателя
на ком . crunchify. учебники . CrunchifyTimerExample $ NextTask . run ( CrunchifyTimerExample . java : 29 )
в Яве . Util. TimerThread . mainLoop ( Таймер . Java : 555 )
в Яве . Util. TimerThread . беги ( Таймер . Ява : 505 )
|
0.00 (0%) 0 votes







