Concurrency abstractions: data and control. Thread safe classes with external synchronization (and disadvantages). Concurrent data structures in Java: lists, maps, and queues; hints about their implementation. Application frameworks with thread pools. Tasks in Java: runnables, callables, futures and executors.
(recommended reading and references to follow)