Java được chạy bên trong một máy ảo được gọi là trình biên dịch JIT (Just In Time). Khi bạn khởi động một ứng dụng java đơn giản, ngay cả khi bạn không bắt đầu bất kỳ luồng nào trong chương trình của mình, một số luồng phải được bắt đầu như sau.
- Một luồng cho máy ảo.
- Một luồng khác chạy bộ thu gom rác.
- Tuy nhiên, một cái khác chạy trình biên dịch JIT
- Và tất nhiên, luồng chính chạy chương trình của bạn.
Có thể có các luồng khác cũng đang chạy để kiểm tra các điều kiện khác nhau, chẳng hạn như xem thời điểm an toàn để gọi trình thu gom rác, kích hoạt trình biên dịch, xác minh và xác thực mã được tạo và các tác vụ khác như vậy.
Nếu ứng dụng của bạn đang chạy AWT hoặc Swing thì bạn cũng có các luồng cho người điều phối sự kiện, bộ hẹn giờ, thực thi và tất nhiên là một luồng giao diện người dùng.
Một chương trình Xin chào, Thế giới đơn giản có thể có nhiều luồng đang chạy. Tuy nhiên, điều quan trọng cần lưu ý là hầu hết các chủ đề này đang dành phần lớn thời gian để chờ tín hiệu và không thực hiện được nhiều.