Мне показалось, что этот код работает
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByExtension("js");
int time_in_ms = 3000;
se.put("ms", time_in_ms);
Instant before = Instant.now();
se.eval("java.lang.Thread.sleep(ms)");
Instant after = Instant.now();
System.out.printf("Expected: %dms Actual %dms%n", time_in_ms, Duration.between(before, after).toMillis());
Я мог бы изменить time_in_ms
и получить другие значения, например
Expected: 3000ms Actual 3195ms
(очевидно, они отличаются из-за накладных расходов при оценке javascript)
Я пробовал под Windows с JDK1.8 и JDK11.