zoukankan      html  css  js  c++  java
  • java 定时器

    Timer定时器是单线程执行

    定时器实现的流程:

    (1)第一步:创建一个Timer。

    (2)第二步:创建一个TimerTask。

    (3)第三步:使用Timer执行TimerTask。

    执行:

    (1)schedule(task,time) 在时间等于或超过time的时候执行且只执行一次task,这个time表示的是例如2019年11月11日上午11点11分11秒。指的是时刻。

    (2)schedule(task,time,period)

    在时间等于或超过time的时候首次执行task,之后每隔period毫秒重复执行一次task 。这个time和上一个一样。

    (3)schedule(task, delay)

    在delay时间之后,执行且只执行一次task。这个delay表示的是延迟时间,比如说三秒后执行。

    (4)schedule(task,delay,period)

    在delay时间之后,开始首次执行task,之后每隔period毫秒重复执行一次task ,这个delay和上面的一样。

    (5)scheduleAtFixedRate(task, time, period)

    在时间等于或超过time的时候首次执行task,之后每隔period毫秒重复执行一次task 。这个time表示的是例如2019年11月11日上午11点11分11秒。指的是时刻。

    (6)scheduleAtFixedRate(task, delay, period)

    在delay时间之后,开始首次执行task,之后每隔period毫秒重复执行一次task ,这个delay表示的是延迟时间,比如说三秒后执行。

    schedule和scheduleAtFixedRate的区别:

    schedule:如果第一次执行时间被delay了,随后的执行时间按照上一次实际执行完的时间点进行计算 。scheduleAtFixedRate:如果第一次执行时间被delay了,随后的执行时间按上一次开始的时间进行计算,并且为了赶上进度会多次执行任务。

    Timer存在的缺陷:

    Timer是单线程执行,当有一个任务出现error的时候,所有的都停止执行。

    推荐使用ScheduledExecutorService框架的定时器。

    2. 采用@Scheduled(cron = "")注解来设置定时器

  • 相关阅读:
    使用ServiceStackRedis链接Redis简介
    浅谈SQL SERVER中事务的ACID
    Sql Server查询性能优化之走出索引的误区
    Redis命令总结
    TSQL查询进阶—理解SQL Server中的锁
    SQL Server 2005 分区表实践——分区切换
    SQL Server Profiler 模板
    深入浅出SQL Server中的死锁
    不同的单元中的类可以共用同一个命名空间
    从硬盘上装xp手记(2005.8.14 )
  • 原文地址:https://www.cnblogs.com/pass-ion/p/13452601.html
Copyright © 2011-2022 走看看