Java: Dừng thực thi với phương thức Thread.sleep()

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Phương thức Thread.sleep() khiến cho luồng hiện thời tạm ngừng thực thi trong một thời gian xác định. Đây là một cách hiệu quả để cung cấp thời gian xử lý cho các luồng khác của một ứng dụng hoặc các ứng dụng khác mà có thể chạy trên hệ thống máy tính. Phương thức sleep() cũng có thể được sử dụng để tạo nhịp, như trong ví dụ dưới đây, và chờ luồng khác với nhiệm vụ được hiểu là có những yêu cầu thời gian, như ví dụ SimpleThreads được trình bày trong phần sau.

Hai phiên bản tải chồng của sleep được cung cấp: một là xác định thời gian ngủ với độ chính xác phần nghìn giây và một là với độ chính xác nano giây. Tuy nhiên, những lần ngủ là không đảm bảo chính xác, bởi vì chúng được giới hạn bởi các cơ sở cung cấp bởi hệ điều hành. Ngoài ra, thời gian ngủ có thể được chấm dứt bởi các ngắt (interrupt), như chúng ta sẽ thấy trong bài viết sau. Trong mọi trường hợp, bạn không thể giả định rằng việc gọi sleep sẽ đình chỉ luồng nhằm chính xác khoảng thời gian quy định.

Ví dụ SleepMessages dưới đây sử dụng sleep() để in các thông điệp sau mỗi khoảng thời gian là bốn giây:

public class SleepMessages {
  public static void main(String args[])
    throws InterruptedException {
    String importantInfo[] = {
      "Mares eat oats",
      "Does eat oats",
      "Little lambs eat ivy",
      "A kid will eat ivy too"
    };

    for (int i = 0;
         i < importantInfo.length;
         i++) {
      //Dừng 4 giây (4000 mini giây)
      Thread.sleep(4000);
      //In thông tin
      System.out.println(importantInfo[i]);
    }
  }
}

Bạn thấy ở phương thức main() khai báo throws InterruptedException. Đây là một ngoại lệ mà sleep ném khi luồng khác làm gián đoạn luồng hiện thời trong khi sleep đang hoạt động. Trong ví dụ trên, vì không định nghĩa thêm một luồng nào khác để gây ra gián đoạn, nên nó không quan tâm đến việc bắt ngoại lệ InterruptedException.

» Tiếp: Ngắt và kết nối Thread
« Trước: Định nghĩa và khởi tạo Thread
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!