Goetz explains several parallel abstractions above the OS mutexes. Java also has Atomics, Streams, ForkJoin, and ThreadPool resources in their concurrency library. Probably starting to age at this point, but its a lot nicer than using locks.
Slightly unrelated: I am a complete beginner in Javascript, and I was trying it out for a small web-based UI. I was surprised how importing one js into another was non-intuitive. One would need to import all the js's into the main HTML. Feel free to correct me if I am abusing it.