Tạm Dừng Luồng
(Pause Thread)

Phương thức Thread.sleep() trong Java được sử dụng để tạm dừng việc thực thi của một luồng trong một khoảng thời gian nhất định. Điều này giúp nhường thời gian xử lý cho các luồng khác trong ứng dụng hoặc các ứng dụng khác đang chạy trên hệ thống. Ngoài ra, phương thức sleep() còn có thể được dùng để điều chỉnh tốc độ thực thi của các tác vụ hoặc chờ đợi một luồng khác hoàn thành công việc.

Java cung cấp hai phiên bản của phương thức sleep():

↳ Thread.sleep(long millis): Tạm dừng luồng hiện tại trong số mili giây được chỉ định.

↳ Thread.sleep(long millis, int nanos): Tạm dừng luồng hiện tại trong số mili giây và nano giây được chỉ định.

Tuy nhiên, cần lưu ý rằng thời gian tạm dừng không hoàn toàn chính xác, vì nó phụ thuộc vào hệ điều hành và các yếu tố khác. Ngoài ra, quá trình tạm dừng có thể bị ngắt bởi các sự kiện khác, như sẽ được giải thích ở phần sau.

Dưới đây là một ví dụ minh họa cách sử dụng phương thức sleep() trong một luồng để in các thông báo sau mỗi khoảng thời gian 4 giây:

Ví dụ: Example.java

public class Example {
    public static void main(String[] args) {
        // Mảng chứa các thông điệp cần in ra
        String[] messages = {
            "Bắt đầu chuỗi tin nhắn",
            "Đang xử lý...",
            "Gần xong rồi...",
            "Chuỗi đã hoàn tất!"
        };

        // Thay đổi khoảng thời gian tạm dừng cho mỗi thông điệp

        // Vòng lặp để in từng thông điệp với khoảng thời gian tạm dừng khác nhau
        for (int i = 0; i < messages.length; i++) {
            try {
                // Tạm dừng chương trình theo khoảng thời gian đã chỉ định
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // Xử lý ngoại lệ nếu luồng bị gián đoạn
                System.err.println("Luồng bị gián đoạn: " + e.getMessage());
            }
            // In thông điệp hiện tại ra màn hình
            System.out.println(messages[i]);
        }
    }
}

Kết quả của chương trình là

Bắt đầu chuỗi tin nhắn
Đang xử lý...
Gần xong rồi...
Chuỗi đã hoàn tất!

Giải thích chương trình trên:

↳ Ngoại lệ InterruptedException: Phương thức sleep có thể ném ra ngoại lệ này nếu luồng hiện tại bị ngắt bởi một luồng khác trong khi đang ngủ. Trong ví dụ này, vì không có luồng nào khác được định nghĩa để gây ra ngắt, nên chương trình không cần phải xử lý InterruptedException.

↳ Sử dụng Thread.sleep(3000): Mỗi khi vòng lặp chạy, chương trình sẽ tạm dừng 4 giây trước khi in ra một thông điệp từ mảng importantInfo.

Ví dụ này minh họa cách sử dụng Thread.sleep để tạm dừng luồng một cách đơn giản, giúp bạn có thể quản lý thời gian thực thi của ứng dụng một cách hiệu quả.

Câu Nói Truyền Cảm Hứng

“Bắt đầu ở đâu không quan trọng, quan trọng là bạn sẵn sàng bắt đầu.” – W. Clement Stone

Không Gian Tích Cực

“Chúc bạn luôn giữ vững niềm tin và sức mạnh để vượt qua mọi thử thách trong cuộc sống.”