PostConditionException is used to validate computed results in methods and if not within the
supported ranges, throw an appropriate exception describing the problem.
PreConditionException is used to validate incoming arguments to methods and if not within the
supported ranges, throw an appropriate exception describing the problem.
When an object implementing interface Runnable is used
to create a thread, starting the thread causes the object's
run method to be called in that separately executing
thread.