Tôi có một chương trình máy chủ thăm dò cơ sở dữ liệu cho các yêu cầu mới, tôi muốn bỏ phiếu này trong khoảng thời gian 1 phút, tôi đã thiết lập một Thread.sleep() trong chương trình trong khi vòng lặp.
Vấn đề là bất cứ khi nào chương trình này được cho là "ngủ" thì mức tiêu thụ CPU tăng lên đáng kể (khoảng 25 - 30%).
Nghịch lý, khi chương trình không hoạt động và đang bận xử lý yêu cầu, mức tiêu thụ CPU giảm xuống 0,4%.
Tôi đọc trực tuyến và phát hiện ra rằng có hiệu suất truy cập liên quan đến thread.sleep, nhưng tôi không thể tìm thấy bất kỳ thay thế khả thi (Thread.wait yêu cầu thông báo về một đối tượng, điều mà tôi cảm thấy là vô ích trong kịch bản của tôi)Mức tiêu thụ CPU khi chỉ đang ngủ bằng cách sử dụng Thread.sleep
Vòng lặp chính (khi không có yêu cầu mới) không làm gì cả, đây là bộ xương của tất cả những gì đang được thực hiện khi mức tiêu thụ CPU là 25%
-> poll
-> Không có bản ghi mới?
-> Ngủ
-> lặp lại
Bạn ngủ trong bao lâu? và phần còn lại của vòng lặp 'while' đang làm gì? – EJP
Điều đó thật kỳ lạ. Bạn có thể giảm nó xuống một chương trình nhỏ hoạt động giống như bạn mô tả và đăng nó ở đây không? Ít nhất, vui lòng chỉ cho chúng tôi bộ xương của vòng lặp 'sleep' của bạn (sử dụng mã thực tế). – NPE
Vui lòng cung cấp phần mã nơi bạn thực sự ngủ. –