It is not that Thread.sleep
in a loop itself is a performance problem, but it is usually a hint that you are doing something wrong.
while(! goodToGoOnNow()) {
Thread.sleep(1000);
}
Use Thread.sleep
only if you want to suspend your thread for a certain amount of time. Do not use it if you want to wait for a certain condition.
For this situation, you should use wait/notify
instead or some of the constructs in the concurrency utils packages.
Polling with Thread.sleep
should be used only when waiting for conditions external to the current JVM (for example waiting until another process has written a file).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…