diff -Naur jdk8.orig/jdk/src/share/classes/java/lang/Thread.java jdk8/jdk/src/share/classes/java/lang/Thread.java --- jdk8.orig/jdk/src/share/classes/java/lang/Thread.java 2015-06-05 14:50:08.649527076 +0300 +++ jdk8/jdk/src/share/classes/java/lang/Thread.java 2015-06-05 14:51:43.135521481 +0300 @@ -36,6 +36,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.locks.LockSupport; +import java.util.concurrent.TimeUnit; import sun.nio.ch.Interruptible; import sun.reflect.CallerSensitive; import sun.reflect.Reflection; @@ -1233,7 +1234,7 @@ */ public final synchronized void join(long millis) throws InterruptedException { - long base = System.currentTimeMillis(); + long base = System.nanoTime(); long now = 0; if (millis < 0) { @@ -1251,7 +1252,7 @@ break; } wait(delay); - now = System.currentTimeMillis() - base; + now = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - base); } } }