Building thread-safe abstractions in Java versus Go

[^1]: Go's built-in map type isn't concurrent safe. There's a [`sync.Map`](https://pkg.go.dev/sync#Map) type that can be used as an alternative, but it's generally not recommended unless you have done performance testing to confirm it's faster since it adds overhead in some scenarios. [^2]: The way `wait()` works in Java is it pauses the current thread, only waking it up once until either (a) a…