Spin locks are synchronization primitives where a thread repeatedly polls or “spins” in a loop while waiting to acquire the lock. This spinning can consume CPU cycles, especially in scenarios where the lock is held for a long time. It avoids context switches and potential overhead associated with thread blocking.