When it comes to concurrency, languages like Erlang have become increasingly popular due to the way they were designed to deal with concurrency issues.
But as this post by Stephan Schmidt point out, even if you're impressed by Erlang's concurrency approach, that doesn't mean you can't use Java. He provides four alternatives that provide Erlang-like behaviors using Java.
Read Stephan Schmidt's post 'Want Erlang concurrency but are stuck with Java: 4 Alternatives':
On a related post, E.Sammer offers an alternative perspective on Java concurrency. One based on annotations, or what he describes as declarative concurrency.
Read E.Sammer's post 'Declarative Concurrency in Java':