I have tried to delay - or put to sleep - my Java program, but an error occurs.
I'm unable to use Thread.sleep(x)
or wait()
. The same error message appears:
unreported exception java.lang.InterruptedException; must be caught or declared to be thrown.
Is there any step required before using the Thread.sleep()
or wait()
methods?
You have a lot of reading ahead of you. From compiler errors through exception handling, threading and thread interruptions. But this will do what you want:
A simpler way to wait is to use
System.currentTimeMillis()
, which returns the number of milliseconds since midnight on January 1, 1970 UTC. For example, to wait 5 seconds:This way, you don't have to muck about with threads and exceptions. Hope this helps!
When using Android (the only time when I use Java) I would recommend using a handler instead putting the thread to sleep.
Reference: http://developer.android.com/reference/android/os/Handler.html
Alternatively, if you don't want to deal with threads, try this method:
It starts when you call it, and ends when the number of seconds have passed.
Have a look at this excellent brief post on how to do this properly.
Essentially: catch the
InterruptedException
. Remember that you must add this catch-block. The post explains this a bit further.As other users have said you should surround your call with a
try{...} catch{...}
block. But since Java 1.5 was released, there is TimeUnit class which do the same as Thread.sleep(millis) but is more convenient. You can pick time unit for sleep operation.Also it has additional methods: TimeUnit Oracle Documentation