【Java 8 新特性】Java Clock tick() 设置时间最小跳动间隔

相当于从基础时间开始每固定时间跳动一次,里面时间为调动的时间间隔

//以下需求为记录每五秒整操作的次数

 String key = "testKey";
 //以 Clock.systemDefaultZone()为基础时间,每五分钟变换一次,.millis()获取到最近一次变换的毫秒数
 long millis = Clock.tick(Clock.systemDefaultZone(), Duration.ofMinutes(5)).millis();
 //对redis的key值进行增1 以增量的方式将double值存储在变量中
 Long count = redisTemplate().opsForValue().increment(key + "_" + millis);
 //设置redis过期时间为6分钟
 redisTemplate().expire(key, Duration.ofMinutes(6));

Clock.tick获得一个时钟,它返回从指定时钟截断到最近出现的指定持续时间的实例。

截断的时刻将小于接近指定持续时间的实际时刻,最小的时间单位是指定的时间单位。

获得的时钟将只按照指定的持续时间进行滴答(tick)

从Java文档中找到tick的方法签名。

public static Clock tick(Clock baseClock, Duration tickDuration) 
1
其中,baseClock是滴答时钟所依据的基础时钟。tickDuration是每个可见刻度的持续时间。

滴答持续时间不能是负值或空值。

对于1毫秒的持续时间,我们可以使用tickMillis,对于1秒的持续时间,我们可以使用tickSeconds,对于1分钟的持续时间,我们可以使用时钟的tickMinutes方法。

以毫秒为单位
当持续时间超过 100 毫秒到 tick 方法时,Clock 的 instant() 方法会将当前时刻截断到最近出现的 100 毫秒持续时间。

截断的瞬间将始终小于基本瞬间。

下一次时钟滴答将在 100 毫秒后发生,直到那时瞬间不会改变。

假设我们传递了 1 毫秒的持续时间。

Clock clock = Clock.tick(Clock.system(zoneId), Duration.ofMillis(1)); 
1
我们可以改用 tickMillis 方法。

Clock clock = Clock.tickMillis(zoneId); 

以秒为单位
当持续时间超过 10 秒到tick 方法时,时钟会将当前瞬间截断到最接近的 10 秒持续时间,最小时间单位为秒。

我们将得到比基本瞬间更短的截断瞬间。

下一个时钟滴答将在 10 秒后发生,直到那时瞬间不会改变。

以分钟为单位
当持续时间超过 5 分钟到tick 方法时,时钟会将当前瞬间截断到最接近的 5 分钟持续时间,最小时间单位为分钟。

我们将得到比基本瞬间更短的截断瞬间。

下一个时钟滴答将在 5 分钟后发生,直到那时瞬间不会改变。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值