We are living in the second generation of concurrency tools. When first were mainly extensions to existing languages, the new languages, primary designed for concurrency programming appeared.
I guess Erlang was the first swallow in such kind of languages, but now, as far as I know, we have two more:
Clojure (http://clojure.org/) and Go (http://golang.org/).
They explore interesting ideas about future of the languages: built-in thread safety with transactional memory for shared data in Clojure and goroutines - very lightway "threads" that runs in parallel and have a nice concept of channels and callbacks that allows goroutines to coordinate.