Java 8中是否有一种方法可以使线程休眠直到使用特定时钟的瞬间?

Gus*_*ave 9 java java-8 java-time

给定一个Clock,一个Instant和当前的Thread,Java库中是否有一些(实用)方法使当前线程休眠直到给定时钟到达瞬间?

就像是

public static void sleepUntil(Instant instant, Clock clock) 
 throws InterruptedException;
Run Code Online (Sandbox Code Playgroud)

我在测试环境中需要这个,我正在使用自定义减速时钟.

我知道它很容易实现,但我更喜欢标准的解决方案(如果可用的话)(但到目前为止还没有找到).

Tun*_*aki -2

我能想到的唯一方法是创建一个 while 循环,并在时钟到达给定时刻时中断它。

public static void sleepUntil(Instant instant, Clock clock) throws InterruptedException {
    while (clock.millis() < instant.toEpochMilli()) {
        Thread.sleep(1000);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于固定时钟,这将永远循环。