In Lock splitting we use different locks for different parts of the
application. In Lock striping we use multiple locks to protect
different parts of the same data structure.
ConcurrentHashMap class of Java internally uses different buckets
to store its values. Each bucket is chosen based on the value of key.
ConcurrentHashMap uses different locks to guard different buckets.
When one thread that tries to access a hash bucket, it can acquire the
lock for that bucket. While another thread can simultaneously
acquire lock for another bucket and access it. In a synchronized
version of HashMap, the whole map is has one lock.
Lock striping technique gives better performance than Synchronizing
the whole data structure.
https://www.geeksforgeeks.org/what-is-lock-striping-in-java-concurrency/