The get() method in Future is defined to block until the task has completed, or until an exception is thrown. So this is already taken care of for you. There's no need to implement waiting. [ January 20, 2008: Message edited by: Jim Yingst ]
As Jim stated, get() method will block the current thread till the task is done. You could call the overloaded method get(10,TimeUnit.SECONDS) which would block about 10 seconds then throw Timeout Exception if it the task has not been completed.