Offline processing is a feature of almost all IT projects of any size. Often there is a natural business reason to group items for processing, and this is where offline processing becomes a batch job. There are also legitimate technical reasons for batching items for processing to enhance performance and throughput. In both cases, the delivery of such systems presents challenges. This presentation explores the boundary between what is classified as a batch and what is not and shows that it can be blurred for business or technical reasons. The session concentrates on the challenges of increasing throughput in crucial high-volume business environments and explains how a range of patterns has emerged to help address those challenges. Then it takes a look at the Java™ programming language and available tooling to see how they provide a good platform for enabling efficient batch processing. It uses examples from real-life applications throughout.