1. Концепция
Запланированная функция задачи, в основном, использует объект таймера в Java, которая использует многопоточную внутреннюю часть для обработки, поэтому он по-прежнему очень связан с технологией многопоточности. В JDK класс таймера в основном отвечает за функцию задач планирования, то есть начинает выполнять определенную задачу в указанное время, но класс, который инкапсулирует задачу, является классом Timertask.
Настройте задачу, которая будет выполнена путем наследства класса Timertask и реализации метода run ():
открытый класс mytask расширяет timertask {@override public void run () {dateformat dateformat = timeutil.df.get (); System.out.println («Моя задача работает» + dateformat.format (new Date ())); }}Запустите задачу во время выполнения, выполнив Timer.schedule (задача Timertask, дата времени):
Public Class Run {private Static Timer Timer = new Timer (); public static void main (string [] args) бросает parseexception {timer.schedule (new mytask (), timeutil.df.get (). parse ("2017-09-14 09:19:30")); }}Примечание: класс инструмента преобразования времени обеспечивает безопасность потока:
Public Class TimeUtil {public Static Final Threadlocal <DateFormat> df = new Threadlocal <TayFormat> () {@Override Protected DateFormat initialValue () {return new SimpleDateFormat ("yyyy-mm-dd HH: MM: ss"); }};} 2. Меры предосторожности класса таймера
1. Создание объекта таймера означает, что новый поток запускается, но недавно запущенный поток не является потоком демона. Он работает на заднем плане. Недавно запущенный поток таймера может быть установлен в виде потока демона через следующее.
частный статический таймер Timer = новый таймер (true);
2. Заранее: когда запланированное время раньше, чем текущее время, задача будет выполнена немедленно.
3. Задержка: Timertask запускается один за другим в очереди, поэтому время выполнения может быть несовместимо со временем, которое вы ожидаете, потому что предыдущая задача может занять много времени, и время выполнения последующей задачи будет отложено. Конкретное время начала отсроченной задачи основано на «времени окончания» предыдущей задачи.
4. Периодическая операция: timer.schedule (задача Timertask, дата первого периода, длительный период), начиная с первого периода, задачи выполняются каждые миллисекунд периода:
5. Расписание (задача Timertask, длинная задержка) Текущее время - это время справочника. После задержки установленного числа миллисекундов в это время выполняется задача Timertask.
6. Расписание (задача Timertask, длительная задержка, длительный период). Текущее время - это время. Исходя из этого, задерживайте установленное количество миллисекундов, а затем выполните задачу с бесконечным количеством раз в определенном интервале.
7. В чем разница между Timer's Cancel () и Timertask's Cancel ()?
Выполнение заданий, упомянутых ранее, выполняется один за другим в форме столбцов. Timertask.cancel () относится к отмене текущей задачи от задачи к колонне. Значение timer.cancel () состоит в том, чтобы отменить все задачи в текущей очереди задач. Стоит отметить, что Timer's Cancel () иногда не обязательно перестает выполнять запланированные задачи, но выполняет их нормально. Это связано с тем, что метод Cancel () в классе таймера иногда не конкурирует за блокировку очереди, поэтому задачи в классе Timertask продолжают выполняться нормально.
3. Разница между PreduleAtFixEdRate (задача Timertask, дата первого периода, длительный период) и графиком (задача Timertask, дата первого периода, длительный период)
Сходство:
1. Список методов и метод PradeAteFixEdRate выполняются по порядку, поэтому ситуации безопасности без тренажеров не требуются.
2. График метода и метод PradeuleAtFixEdRate Если время выполнения задачи не задерживается, то время выполнения следующей задачи рассчитывается на основе времени в «запуске» предыдущей задачи.
3. График метода и метод PradeAteAtFixEdRate Если время для выполнения задачи отложено, время выполнения следующей задачи рассчитывается путем ссылки на время в конце последней задачи.
Различия:
В основном нет разницы между графиком методов и использованием метода PradeAteFixEdRate, то есть PradeAteAtFixEdRate имеет выполнение догоживания. Что это значит? То есть, если задача прервана во время периодической работы, PradeAteAtFixEdRate попытается выполнить ранее сброшенные задачи. И график игнорируется, а затем запустите следующую задачу. Вы можете ссылаться на этот блог, который написан ярко.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.