Ngủ so với Chờ: Sự khác biệt và So sánh

Java có một số phương thức để thực hiện một số hành động nhất định.

Một phương thức là một nhóm mã chỉ chạy khi nó được gọi; và có thể hoặc không thể trả về kết quả.

Các phương pháp như ngủ và chờ được sử dụng cho đa luồng. Cả hai đều tạm dừng và gửi luồng vào trạng thái chờ nhưng có sự khác biệt lớn về chức năng.

Các nội dung chính

  1. “Ngủ” là trạng thái nghỉ ngơi trong đó cơ thể và tâm trí không hoạt động, trong khi “Chờ” là ở yên một chỗ hoặc trì hoãn hành động cho đến khi một sự kiện cụ thể xảy ra.
  2. “Ngủ” là một chức năng tự nhiên và cần thiết của cơ thể, trong khi “Chờ” là một hành động tự nguyện có thể chọn hoặc tránh.
  3. “Ngủ” gắn liền với ban đêm, trong khi “Chờ” có thể xảy ra bất cứ lúc nào trong ngày.

Ngủ vs Chờ

Sự khác biệt giữa phương thức sleep() và wait() là phương thức sleep() được sử dụng trong chương trình để tạm dừng việc thực thi luồng hiện tại trong một khoảng thời gian cụ thể trong khi phương thức wait() được sử dụng trong chương trình để tạm dừng hoặc tạm dừng chuỗi hiện tại cho đến khi các phương thức cụ thể được gọi.

Ngủ vs Chờ

Trong quá trình sử dụng phương thức ngủ, chuỗi hiện tại không mất quyền sở hữu màn hình.

Ngủ là một phương thức tĩnh và là một phần của chuỗi lớp. Sau khi thời gian chờ kết thúc, luồng sẽ quay trở lại trạng thái có thể chạy được ban đầu.

Nó đảm bảo sử dụng hoàn toàn CPU trong khi chờ đợi.

Trong khi đó phương thức wait() được sử dụng trong chương trình Java để ra lệnh cho luồng hiện tại đợi cho đến khi một luồng khác không được gọi cho đối tượng đó.

Sau đó, luồng tiếp tục thực hiện khi nó có được quyền kiểm soát màn hình.

Nó không phải là một phương thức tĩnh, không giống như chế độ ngủ và là một phần của lớp đối tượng.

Bảng so sánh

Các thông số so sánhNgủĐợi
LớpPhương thức ngủ là một phần của lớp luồngPhương thức chờ đợi là một phần của lớp đối tượng
Loại phương phápNgủ là một phương pháp tĩnhChờ không phải là một phương pháp tĩnh
kỹ thuật gọiPhương thức ngủ có thể được gọi từ bên ngoài ngữ cảnh được đồng bộ hóaPhương thức đợi chỉ có thể được gọi từ bối cảnh được đồng bộ hóa
Khóa phát hànhPhương thức ngủ không giải phóng khóa trên đối tượng, trong thời gian chờ đã chỉ định, trong khi đồng bộ hóaPhương thức chờ giải phóng khóa trên đối tượng, để có cơ hội thực thi, trong quá trình đồng bộ hóa
Tờ khaichế độ ngủ void tĩnh công khai()public cuối cùng void wait()

Ngủ là gì?

Chuỗi ngủ () là một phương thức tĩnh trong chương trình Java tạm dừng chuỗi hiện tại và đặt nó ở trạng thái chờ trong một khoảng thời gian quy định.

Khi trạng thái chờ và thời gian kết thúc, điều kiện luồng được thay đổi thành trạng thái có thể chạy được. Và sau đó đợi CPU thực hiện tiếp.

Mục đích của phương pháp này là tạo ra độ trễ trong vài giây trong chương trình và đồng thời tận dụng tối đa CPU.

Nếu hệ thống đang bận hoặc quá tải thì thời gian chờ hoặc tạm dừng sẽ nhiều hơn, ngược lại sẽ ít hơn hoặc bằng thời gian thực tế.

Kiểu trả về của phương thức ngủ có thể nói là void, vì nó không trả về bất kỳ giá trị nào.

Chủ đề ngủ không làm mất màn hình hoặc khóa chủ đề mà nó đã có được.

Trong mọi trường hợp, nếu giấc ngủ bị xáo trộn, luồng sẽ ném Interrupted_Exception.

Khoảng thời gian thực tế mà luồng sẽ ngủ tùy thuộc vào bộ lập lịch và bộ tính giờ hệ thống là một phần của hệ điều hành.

Cú pháp của phương thức ngủ là – public static void sleep(long mili giây)

chế độ ngủ void tĩnh công khai (mili giây dài, int nano giây)

Ở đây mili giây và nano giây là thời gian mà luồng sẽ ngủ.

ngủ

Chờ đợi là gì?

Wait() là một phương thức được sử dụng để liên lạc giữa các luồng.

Bất cứ khi nào luồng wait() được sử dụng, cuộc gọi hoặc luồng hiện tại sẽ bị tạm dừng và tạm dừng cho đến khi các phương thức như notify() hoặc notifyAll() được gọi trong hệ thống.

phương thức notify() sẽ đánh thức các luồng đã chỉ định trong khi notifyAll() có thể áp dụng cho mọi luồng.

Khi được đồng bộ hóa, phương thức chờ sẽ từ bỏ khóa tài nguyên.

Không có giá trị trả về của phương thức Wait, do đó có thể nói rằng nó trả về void.

Hai ngoại lệ của phương thức Chờ là Interrupted_Exception (khi luồng hiện tại bị gián đoạn trong khi ngủ) và IllegalMonitorStateException (khi luồng hiện tại không phải là chủ sở hữu của đối tượng trên màn hình).

Phương thức Wait là một phần của lớp đối tượng. Phương pháp này chỉ được áp dụng và có thể được gọi trên một khối được đồng bộ hóa.

Phương pháp chờ đặt màn hình bị treo hoặc bị khóa miễn phí trong quá trình đồng bộ hóa.

Và phương thức Chờ dành riêng cho phép nhiều luồng được đồng bộ hóa lần lượt truy cập vào cùng một đối tượng.

Cú pháp của phương thức Wait là – public final void wait()

chờ đợi

Sự khác biệt chính giữa Ngủ và Chờ

  1. Phương thức Ngủ làm cho luồng ở chế độ ngủ trong một khoảng thời gian cụ thể và được chỉ định, trong thời gian chờ được chỉ định trừ khi hết hạn hoặc bị gián đoạn, trong khi phương thức Chờ làm cho luồng ở chế độ ngủ cho đến khi các phương thức như notification() hoặc notificationAll() được gọi.
  2. Phương thức Ngủ thực thi trên một luồng, trong khi phương thức Chờ thực thi trên một đối tượng.
  3. Phương thức Ngủ được sử dụng để đồng bộ hóa thời gian, trong khi phương thức Chờ được sử dụng để đồng bộ hóa nhiều luồng.
  4. Trong chuỗi Chờ, nhiều chuỗi được đồng bộ hóa có thể truy cập cùng một đối tượng một cách liền kề, trong khi ở chuỗi Ngủ, nhiều chuỗi được đồng bộ hóa phải chờ cho chuỗi ngủ của chuỗi hiện tại kết thúc.
  5. Phương thức Chờ đặt khóa hoặc màn hình miễn phí, trong khi phương thức Ngủ không đặt màn hình miễn phí trong khi ngủ hoặc chờ luồng hiện tại.
Sự khác biệt giữa X và Y 2023 05 10T161359.507
dự án
  1. https://pdfs.semanticscholar.org/51fd/24ae444910fd39b117bb3044a12591f038fa.pdf
  2. https://dl.acm.org/doi/pdf/10.1145/289524.289572

Một yêu cầu?

Tôi đã nỗ lực rất nhiều để viết bài đăng trên blog này nhằm cung cấp giá trị cho bạn. Nó sẽ rất hữu ích cho tôi, nếu bạn cân nhắc chia sẻ nó trên mạng xã hội hoặc với bạn bè/gia đình của bạn. CHIA SẺ LÀ ♥️

Bạn muốn lưu bài viết này cho sau này? Nhấp vào trái tim ở góc dưới cùng bên phải để lưu vào hộp bài viết của riêng bạn!

về tác giả

Chara Yadav có bằng MBA về Tài chính. Mục tiêu của cô là đơn giản hóa các chủ đề liên quan đến tài chính. Cô đã làm việc trong lĩnh vực tài chính khoảng 25 năm. Cô đã tổ chức nhiều lớp học về tài chính và ngân hàng cho các trường kinh doanh và cộng đồng. Đọc thêm tại cô ấy trang sinh học.