use cacheLocs.synchronized instead of scheduler's