Di Java, thread memiliki 5 status berbeda: Baru, Dapat Dijalankan, Berjalan, Diblokir, dan Mati. Diagram konversi di antara keduanya adalah sebagai berikut:
Ada pengecualian pada gambar di atas. Memanggil metode yield() dapat mentransfer thread yang sedang berjalan ke status siap. Jika Anda ingin menguji apakah suatu thread telah mati, Anda dapat menggunakan metode isAlive(), yang mengembalikan nilai true ketika thread sudah siap, berjalan, atau diblokir, dan mengembalikan false ketika thread tersebut dibuat atau mati. Jangan mencoba memulai kembali thread yang mati dengan memanggil metode start(). Kematian berarti kematian, sama seperti manusia, tidak mungkin untuk dibuat ulang. Selain itu, jangan panggil metode start() dua kali pada thread, karena ini juga akan menyebabkan pengecualian.