# sync = true is the difference between one slow call and sixteen 16 threads call the same key at the same instant, cold cache. The method sleeps 300 ms. @Cacheable("reports") -> 16 invocations @Cacheable("syncedReports", sync = true) -> 1 invocation Without sync, every thread that arrives during the 300 ms window misses and runs the method. That is a cache stampede, and it is worst exactly when the cache matters most - right after a restart or an eviction.