Lock splitting is a technique to reduce Lock contention in multithreading. It is applicable in scenario when one lock is used to
synchronize access to different aspects of the same application.
Sometimes we put one lock to protect the whole array. There can be
multiple threads trying to get the lock for same array. This single
lock on array can cause Lock contention among threads. To resolve
this we can give one lock to each element of the array. Or we can
use modulus function to assign different locks to a small group of
array elements. In this way we can reduced the chance of Lock
contention. This is Lock splitting technique.
https://www.geeksforgeeks.org/what-is-lock-striping-in-java-concurrency/