それでも、これしかないという時の為に、、、
public static Consumer<Integer> sleepSecApprox(long precision){ return t->{ LocalDateTime tc = LocalDateTime.now().plusSeconds(t); while(tc.compareTo(LocalDateTime.now()) > 0){ try{ Thread.sleep(precision); }catch(InterruptedException e){ } } }; }
long precision に、できるだけ小さい値(msec)を指定する。
30秒 sleep したい時、、、
sleepSecApprox(100).accept(30);
だいたい、0.1 秒くらい over する。。