Thread (luồng) về cơ bản là một tiến trình con (sub-process) và là một đơn vị xử lý nhỏ nhất của máy tính có thể thực hiện một công việc riêng biệt. Trong Java, các luồng được quản lý bởi máy ảo Java (JVM).
Multi-thread (đa luồng) là một tiến trình thực hiện nhiều luồng đồng thời. Một ứng dụng Java ngoài luồng chính có thể có các luồng khác thực thi đồng thời làm ứng dụng chạy nhanh và hiệu quả hơn. Ví dụ khi play nhạc, chúng ta vẫn có thể tương tác được với nút điều khiển như: Play, pause, next, back … vì luồng phát nhạc là luồng riêng biệt với luồng tiếp nhận tương tác của người dùng.
Khi một chương trình Java chạy, một luồng chính sẽ được xử lý. Luồng chính có 2 đặc điểm sau:
- Các luồng con có thể được tạo ra từ luồng chính;
- Luồng chính là luồng kết thúc cuối cùng. Thời điểm luồng chính dừng (stop) thì chương trình sẽ kết thúc.
Tất cả các chương trình được đề cập trong các chương trước chỉ có một luồng thực hiện duy nhất. Mỗi chương trình được tiến hành tuần tự, hết lệnh này đến lệnh khác, cho đến khi hoàn thành quá trình xử lý và kết thúc. Các chương trình đa luồng tương tự như các chương trình đơn luồng đã được đề cập. Chúng chỉ khác nhau ở chỗ chúng hỗ trợ nhiều hơn một luồng được thực thi đồng thời - nghĩa là chúng có thể thực hiện đồng thời nhiều chuỗi lệnh. Mỗi chuỗi lệnh có luồng điều khiển riêng độc lập với tất cả các luồng khác. Các chuỗi lệnh được thực hiện độc lập này được gọi là các luồng.
Nếu máy tính của chúng ta chỉ có một CPU duy nhất (single processor) thì chỉ một luồng thực thi duy nhất xảy ra tại một thời điểm nhất định. CPU nhanh chóng chuyển đổi qua lại giữa một số luồng để tạo cảm giác rằng các luồng đang thực thi cùng một lúc. Các hệ thống đơn CPU hỗ trợ xử lý song song về mặt logic (logical concurrency) chứ không phải về mặt vật lý (physical concurrency). Song song logic là đặc tính được thể hiện khi nhiều luồng thực thi đồng thời và mỗi luồng được điều khiển độc lập, riêng biệt. Trên các hệ thống đa bộ xử lý (multi processor), trên thực tế, một số luồng thực hiện cùng lúc và thực hiện đồng thời về mặt vật lý. Tính năng quan trọng của các chương trình đa luồng là chúng hỗ trợ đồng thời về logic, chứ không phải đồng thời về vật lý.