Run the logic. This method allows throwing an interrupted exception on wakeup, but the
implementation does not have to. It is preferred to finish the work elegantly and return a
boolean to indicate whether all the jobs have been done or more invocation is needed.
whether the runnable has successfully finished running.