Домой Учебники по Java и J2EE Java Timer и TimerTask — пример учебных пособий для напоминаний

Java Timer и TimerTask — пример учебных пособий для напоминаний

1718
0

java.util.Timer это служебный класс, который можно использовать для планирования выполнения потока в определенное время в будущем. Класс Java Timer может быть использован для планирования задачи, которая будет выполняться одноразово или запускаться через регулярные интервалы.

java.util.TimerTask является абстрактным классом, который реализует интерфейс Runnable, и нам нужно расширить этот класс, чтобы создать нашу собственную функцию TimerTask, которую можно запланировать с помощью класса Java Timer .

Класс Timer является потокобезопасным, и несколько потоков могут совместно использовать один объект Timer без необходимости внешней синхронизации. Класс Timer использует java.util.TaskQueue для добавления задач с заданным регулярным интервалом, и в любое время может быть только один поток, выполняющий TimerTask, например, если вы создаете Timer для запуска каждые 10 секунд, но выполнение одного потока занимает 20 секунд, затем

Объект таймера будет продолжать добавлять задачи в очередь и, как только один поток завершит свою работу, он уведомит об этом очередь, и другой поток начнет выполняться.

Класс Timer использует методы ожидания объекта и уведомления для планирования задач. TimerTask является abstract class и мы наследуем это, чтобы обеспечить конкретную реализацию. Класс TimerTask implements Runnableinterface так что это поток, и, следовательно, ваша реализация TimerTask также является потоком.

Очень простой Timer и TimerTask Пример: задача выполняется один раз 5 seconds Прошло.

CrunchifyTimerTaskExample.java

Джава
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
пакет ком . crunchify. учебные пособия ;
Импортировать Java. Util. Таймер ;
Импортировать Java. Util. TimerTask ;
/ **
* Автор: Crunchify.com
* /
общественности учебный класс CrunchifyTimerTaskExample {
Таймер таймер ;
общественности CrunchifyTimerTaskExample ( int секунд ) {
таймер знак равно новый Таймер ( ) ;
таймер. график ( новый CrunchifyReminder ( ) , секунд * 1000 ) ;
}
учебный класс CrunchifyReminder продолжается TimerTask {
общественности недействительным запустить ( ) {
Система. вне. format ( «Задание таймера завершено ..!% n» ) ;
таймер. отмена ( ) ; // Завершить поток таймера
}
}
общественности статический недействительным главная ( Строка args [ ] ) {
новый CrunchifyTimerTaskExample ( 5 ) ;
Система. вне. формат ( «Задание запланировано. Теперь подождите 5 секунд, чтобы увидеть следующее сообщение ..% n» ) ;
}
}

Результат:

1
2
Задача запланирована . , Теперь ждать 5 сек до см следующее сообщение. ,
Время 's вверх !

Эта простая программа иллюстрирует следующие основные части реализации и планирования задачи, выполняемой потоком таймера:

  • Реализуйте пользовательский подкласс TimerTask , run Метод содержит код, который выполняет задачу. В этом примере подкласс называется CrunchifyReminder.
  • Создать поток путем создания экземпляра Timer учебный класс.
  • Создать экземпляр TimerTask объект ( new CrunchifyReminder() ).
  • Запланируйте задание таймера для выполнения.
ЧИТАТЬ ТАКЖЕ:  Учебник по Java ConcurrentNavigableMap и ConcurrentSkipListMap со всеми подробностями (java.util.concurrent. *)

Как я могу выполнить эту TimerTask несколько раз?

CrunchifyTimerTaskExample.java

Джава
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
33
34
35
36
37
38
39
40
41
42
пакет ком . crunchify. учебные пособия ;
Импортировать Java. Util. Таймер ;
Импортировать Java. Util. TimerTask ;
Импортировать Java. awt . Инструментарий ;
/ **
* Автор: Crunchify.com
* /
общественности учебный класс CrunchifyTimerTaskExample {
Инструментарий инструментарий ;
Таймер таймер ;
общественности CrunchifyTimerTaskExample ( ) {
Инструментарий знак равно Инструментарий. getDefaultToolkit ( ) ;
таймер знак равно новый Таймер ( ) ;
таймер. график ( новый CrunchifyReminder ( ) , 0 , // начальная задержка
1 * 1000 ) ; // последующая ставка
}
учебный класс CrunchifyReminder продолжается TimerTask {
ИНТ петля знак равно 5 ;
общественности недействительным запустить ( ) {
если ( петля > 0 ) {
инструментарий. звуковой сигнал ( ) ;
Система. вне. формат ( Knock Knock ..! / n ) ;
петля;
} еще {
инструментарий. звуковой сигнал ( ) ;
Система. вне. формат ( / nЭто .. Готово! ) ;
таймер. отмена ( ) ;
}
}
}
общественности статический недействительным главная ( Строка args [ ] ) {
новый CrunchifyTimerTaskExample ( ) ;
Система. вне. формат ( «Задание запланировано ..!% n / n» ) ;
}
}

Результат:

1
2
3
4
5
6
7
8
9
Задача запланирована . , !
Тук тук . , !
Тук тук . , !
Тук тук . , !
Тук тук . , !
Тук тук . , !
Вот и это. , Готово. , !

По умолчанию программа продолжает работать до тех пор, пока работают ее потоки таймера. Вы можете завершить поток таймера четырьмя способами:

  • взывать cancel по таймеру. Вы можете сделать это из любой точки программы, например, из задачи таймера. run метод.
  • Сделайте поток таймера «демоном», создав таймер следующим образом: new Timer(true) , Если единственные потоки, оставленные в программе, являются потоками демона, программа завершается.
  • После завершения всех запланированных задач таймера удалите все ссылки на Timer объект. В конце концов, поток таймера будет прерван.
  • Вызвать System.exit метод, который делает выход всей программы (и всех ее потоков).
Java Timer и TimerTask — пример учебных пособий для напоминаний

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь