当前位置:嗨网首页>书籍在线阅读

15-运用带延迟元素的线程安全列表

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.5 运用带延迟元素的线程安全列表

DelayQueue 类是Java并发包中一个非常独特有趣的API。该类可以存储带有激活时间的元素,而它获取元素的方法会自动忽略在未来会出现的元素。这些未来出现的元素对于获取元素的方法来说是不可见的。为了实现该代码逻辑,存储 DelayQueue 类中的元素时就必须实现一个 Delayed 接口。该接口不仅让元素具备延迟出现的特性,还提供 getDelay() 方法来获取当前时间与激活时间之差,同时还会要求实现以下两个方法。

  • compareTo(Delayed o)Delayed 接口继承了 Comparable 接口。如果调用该方法的对象延迟值比方法的参数更小,则该方法会返回负数;反之,如果调用该方法的对象延迟值比方法的参数更大,则该方法会返回正数;如果调用该方法的对象延迟值与方法的参数相等;则该方法会返回0。
  • getDelay(TimeUnit unit) :该方法必须返回一个当前时间与激活时间的差值。 TimeUnit 类是一个枚举类,用来指定该方法返回值的时间单位——它包含若干个枚举常量,如 DAYSHOURSMICROSECONDSMILLISECONDSMINUTESNANOSECONDSSECONDS

在本案例中,我们将介绍用 DelayQueue 类来存储具有不同激活时间的事件的方法。