Trong Java, thread là một phần quan trọng của lập trình đa luồng, cho phép thực hiện nhiều tác vụ đồng thời. Mỗi thread trong Java có thể ở nhiều trạng thái khác nhau trong suốt vòng đời của nó. Mỗi trạng thái phản ánh một bước trong quá trình thực thi của thread. Bài viết này sẽ giải thích các trạng thái của thread ở mức cao, bao gồm các khái niệm cơ bản và các trạng thái chính mà một thread có thể trải qua.
Thread
hoặc thông qua một đối tượng thực hiện Runnable
. Trong trạng thái này, thread chưa được cấp phát tài nguyên để chạy.Thread thread = new Thread(new MyRunnable()); // Thread ở trạng thái New
start()
, nó chuyển sang trạng thái Runnable. Trong trạng thái này, thread có thể đang chạy hoặc đang chờ CPU để thực thi. Điều này có nghĩa là thread có thể không phải lúc nào cũng đang chạy, nhưng nó có khả năng chạy.thread.start(); // Thread chuyển sang trạng thái Runnable
synchronized (someObject) { // Code mà thread đang cố gắng thực thi }
wait()
, join()
, hoặc LockSupport.park()
. Thread sẽ không tiêu tốn tài nguyên CPU khi ở trạng thái này.synchronized (someObject) { someObject.wait(); // Thread chuyển sang trạng thái Waiting }
sleep(millis)
, wait(millis)
, hoặc join(millis)
.Thread.sleep(1000); // Thread sẽ ngủ trong 1000ms
run()
của thread hoàn tất, hoặc do một ngoại lệ không được xử lý.public void run() { // Code thực thi } // Khi code này kết thúc, thread sẽ ở trạng thái Terminated
Vòng đời của thread trong Java rất đa dạng và phản ánh khả năng thực thi song song trong các ứng dụng. Các trạng thái New, Runnable, Blocked, Waiting, Timed Waiting và Terminated giúp quản lý các thread và tài nguyên hệ thống một cách hiệu quả.