1. A method of performing model checking for a concurrent computer program having plural threads, the method comprising: exploring an execution path for a first thread in the concurrent computer program; delaying execution of one or more other threads in the concurrent computer program; determining a commit point for the first thread; and based on an analysis of one or more execution paths following the commit point, determining whether to schedule the one or more delayed other threads for execution at the commit point.