Constructs a new factory which will create an instance of the class
specified by either the value of the specified system property, or the
supplied class name - exactly one of which may be null.
An instance of this object can wait on an object's monitor until a condition
is met, or a given number of milliseconds has elapsed - which ever occurs
soonest.