var locker = new object();
Monitor.Enter(locker);
try
{
var tasks = Task.Factory.StartNew(() => ABC(), TaskCreationOptions.LongRunning)
.ContinueWith(t => DEF(), TaskContinuationOptions.ExecuteSynchronously)
.ContinueWith(t => GHI(), TaskContinuationOptions.ExecuteSynchronously)
.ContinueWith(t => JKL(), TaskContinuationOptions.ExecuteSynchronously)
....
....