【无标题】有用但不为大家所熟知的 Java 特性

1. 延迟队列【Delay Queue】

如您所知,Java 中有许多类型的集合可用。但你听说了DelayQueue​吗?它是一种特定类型的 Java 集合,它允许我们根据元素的延迟时间对元素进行排序。老实说,这是一门非常有趣的课。尽管 DelayQueue​ ****该类是 Java 集合的成员,但它属于 java.util.concurrent​ 包。它实现了BlockingQueue接口。只有当元素的时间到期时,才能从队列中取出元素。

为了使用它,首先在类里面需要实现接口中的getDelay​方法Delayed。它不必是一个类——你也可以使用 Java Record。

public record DelayedEvent(long startTime, String msg) implements Delayed {

    public long getDelay(TimeUnit unit) {
        long diff = startTime - System.currentTimeMillis();
        return unit.convert(diff, TimeUnit.MILLISECONDS);
    }

    public int compareTo(Delayed o) {
        return (int) (this.startTime - ((DelayedEvent) o).startTime);
    }

}

假设我们想推迟元素10秒。我们只需要设置当前时间增加了10秒DelayedEvent类。

final DelayQueue delayQueue = new DelayQueue<>();
final long timeFirst = System.currentTimeMillis() + 10000;
delayQueue.offer(new DelayedEvent(timeFirst, "1"));
log.info("Done");
log.info(delayQueue.take().msg());

上面可见代码的输出是什么?让我们来看看。

2. 时间格式的天数【Period of Days in Time Format】

Java 8 改进了很多时间处理 API。从这个版本的 Java 开始ÿ

你可能感兴趣的:(java,程序员,java编程,java,servlet,jvm)