Rename execute() variant with DataSink to executeWithDataSink
Rename incorrect specs
Fix broken double-check locking pattern

Make 'terminate' variable volatile. More info: http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html