Trang chủHướng dẫnThread sleep trong Java: Cách tạm dừng luồng và những điều cần biết
Java

Thread sleep trong Java: Cách tạm dừng luồng và những điều cần biết

CyStack blog 2 phút để đọc
CyStack blog03/08/2025
Locker Avatar

Bao Tran

Web Developer

Locker logo social
Reading Time: 2 minutes

Thread sleep trong Java

Giới thiệu về Thread sleep trong Java

Phương thức Thread.sleep() trong Java được dùng để tạm dừng thực thi của thread (luồng) hiện tại trong một khoảng thời gian được chỉ định bằng mili giây. Giá trị đối số cho mili giây không được âm, nếu không, ngoại lệ IllegalArgumentException sẽ được sinh ra.

sleep(long millis, int nanos) là một phương thức khác có thể dùng để tạm dừng thực thi của luồng hiện tại trong một số mili giây và nano giây được chỉ định. Các giá trị nano giây cho phép nằm trong khoảng từ 0 đến 999999.

Trong bài viết này, bạn sẽ tìm hiểu về Thread.sleep() của Java.

Cách hoạt động của Thread.sleep()

Thread.sleep() tương tác với thread scheduler để đưa thread hiện tại vào trạng thái chờ trong một khoảng thời gian xác định. Khi thời gian chờ kết thúc, trạng thái của thread được chuyển thành trạng thái runnable state và chờ CPU để tiếp tục thực thi. Thời gian thực tế mà thread hiện tại ngủ phụ thuộc vào thread scheduler, vốn là một phần của hệ điều hành.

Các điểm quan trọng của Thread sleep trong Java

  1. Nó luôn tạm dừng việc thực thi của thread hiện tại.
  2. Thời gian thực tế thread dừng thực thi và trở lại trạng thái sẵn sàng và bắt đầu thực thi phụ thuộc vào system timers và schedulers. Đối với một hệ thống ít bận rộn, thời gian thực tế cho giấc ngủ gần với thời gian đã chỉ định, nhưng đối với một hệ thống bận rộn, nó sẽ lâu hơn một chút.
  3. Thread.sleep() không làm mất bất kỳ monitor (trình giám sát) hoặc lock (khóa) nào mà thread hiện tại đã có được.
  4. Bất kỳ thread nào khác có thể gián đoạn thread hiện tại khi đang ngủ, và trong những trường hợp như vậy InterruptedException sẽ được ném ra.

Ví dụ vềThread sleep trong Java

Dưới đây là một chương trình ví dụ trong đó Thread.sleep() được sử dụng để tạm dừng việc thực thi của main thread trong 2 giây (2000 mili giây):

package com.journaldev.threads;

public class ThreadSleep {

    public static void main(String[] args) throws InterruptedException {
        long start = System.currentTimeMillis();

        Thread.sleep(2000);

        System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
    }
}

Đầu tiên, đoạn code này lưu trữ system time hiện tại theo mili giây. Sau đó, nó dừng lại trong 2000 mili giây. Cuối cùng, đoạn code này in ra system time hiện tại mới trừ đi system time hiện tại trước đó:

Output
Sleep time in ms = 2005

Hãy chú ý rằng sự khác biệt này không chính xác là 2000 mili giây. Điều này là do cách Thread.sleep() hoạt động và việc triển khai thread scheduler phụ thuộc vào hệ điều hành.

Kết luận

Trong bài viết này, bạn đã tìm hiểu vềThread sleep trong Java.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất