Java Cookbook, Second Edition

Problem

You need to sleep for a while.

Solution

Use Thread.sleep( ).

Discussion

You can sleep for any period of time from one millisecond up to the lifetime of your computer. As I write this, for example, I have a chicken on the barbecue. My wife has instructed me to check it every five minutes. Since I'm busy writing, time tends to fly. So, I needed a reminder service and came up with this in a jiffy:

// Reminder.java while (true) { System.out.println(new Date( ) + "\007"); Thread.sleep(5*60*1000); }

The 007 is not a throwback to the Cold War espionage thriller genre, but the ASCII character for a bell code, or beep. It's probably preferable to use \b for this, but then I couldn't make that 007 joke. Had I written the program as a windowed application using a frame, I could have called Toolkit.beep( ) instead, and, by toggling the state of setVisible( ), a pop up would appear every five minutes.

With a bit more work, you could have a series of events and wait until their due times, making a sort of minischeduler entirely in Java. In fact, we'll do that in Recipe 6.14.

Категории