An Evaluation Strategy which delays the evaluation of an expression until the value is needed. It avoids repeated evaluations through the use of sharing between threads.