Как вызвать Thread.sleep в скрипте Nashorn JS - PullRequest
0 голосов
/ 16 января 2019

Я несколько раз пытался использовать Thread.sleep () в Nashorn, но он либо выполняется одновременно, либо выдает исключение.Как я могу использовать Thread.sleep () в скрипте

1 Ответ

0 голосов
/ 16 января 2019

Мне показалось, что этот код работает

    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.

...