use concurrent hash map for locks instead of crazy array/hashcode/mod logic