diff --git a/classpath/java/lang/Thread.java b/classpath/java/lang/Thread.java index 539a709169..936351c809 100644 --- a/classpath/java/lang/Thread.java +++ b/classpath/java/lang/Thread.java @@ -156,6 +156,10 @@ public class Thread implements Runnable { } public static void sleep(long milliseconds) throws InterruptedException { + if (milliseconds <= 0) { + milliseconds = 1; + } + Thread t = currentThread(); if (t.sleepLock == null) { t.sleepLock = new Object(); diff --git a/src/classpath-openjdk.cpp b/src/classpath-openjdk.cpp index b0e0c51a2c..a965fd676d 100644 --- a/src/classpath-openjdk.cpp +++ b/src/classpath-openjdk.cpp @@ -3309,6 +3309,10 @@ jvmSleep(Thread* t, uintptr_t* arguments) { jlong milliseconds; memcpy(&milliseconds, arguments, sizeof(jlong)); + if (milliseconds <= 0) { + milliseconds = 1; + } + if (threadSleepLock(t, t->javaThread) == 0) { object lock = makeJobject(t); set(t, t->javaThread, ThreadSleepLock, lock);