Concurrency in Go: A Better Call Center Tutorial
mprescient.com
mprescient.com
.... huh? Pretty sure I run Java applications with a higher max threads than that all the time. Although, yes, it's good practice to not have too many more than cores unless you want to schedule a lot of I/O requests at once.
I've actually been writing some Go lately, and I like the way channels and goroutines work, but you can (and should) do the exact same thing in Java with SynchronousQueues and ExecutorServices. Those map exactly to channels and goroutines, and are more expressly configurable (which is a plus and minus). It's a little more syntax but it's really flexible and performant.