Yesterday, the Clojure Houston User Group (CHUG) met to discuss the concurrency models provided by different programming languages, namely Erlang, Go, Java, and Scala. As usual, the meeting lasted long into the evening with lively conversation. In particular, I was quite interested in learning more about Erlang and Scala—two languages I have been considering learning for some time.
I presented on the concurrency tools available in Java, briefly talking about the following key topics:
- Task management using the Executor framework
- State management using atomic variables and concurrency-aware collections
- Task coordination using locks and synchronizers
- A preview of things to come in Java 7
While my presentation was by no means exhaustive, I hope that it served to introduce people to the rich set of tools available in Java for writing concurrent applications. For more comprehensive resources, try:
- The Java concurrency tutorial, a good overview that has been updated for Java 7; and
- Java Concurrency in Practice, an eye-opening book that I consider a must-read for any Java developer.