2009-03-05 21 views
9

Làm thế nào để phát hiện ra rằng một máy tính đã được nhàn rỗi trong 30 giây bằng cách sử dụng Java?Làm thế nào để phát hiện rằng một máy tính đã được nhàn rỗi trong 30 giây bằng cách sử dụng Java?

CHỈNH SỬA

Với chế độ chờ tôi có nghĩa là không có hoạt động của người dùng. Người dùng không làm gì trong 30 giây. Tôi wold muốn làm một apllication như Windows, mà phát hiện ra rằng người dùng không có gì và nhập vào stad-by.

+0

bạn có thể thuật lại câu hỏi của mình theo cách cụ thể hơn không? – rogeriopvl

+0

Bạn cần phải xác định 'nhàn rỗi' - là nó không có đầu vào của người dùng, không có hoạt động đĩa, không có quá trình chạy, tải CPU trung bình hoặc cái gì? – Skizz

+0

"Nhàn rỗi" có nghĩa là gì? Không/ít CPU activitiy (những gì về hệ thống đa)? Không có đầu vào của người dùng? Không có lưu lượng mạng? Không có đĩa cứng I/O? – sleske

Trả lời

6

Trực tiếp từ java nó là không thể. Bạn sẽ phải tìm một số thư viện riêng và tạo một trình bao bọc JNI cho điều đó.

+0

Vui lòng hiển thị một số trình bao bọc JNI – YumYumYum

7

Không thể theo yêu cầu, nhưng bạn có thể tạo giải pháp thay thế bằng cách sử dụng java.lang.management API. Việc thực hiện JNI cũng có thể được tìm thấy trên javaworld.

6

Không dễ dàng để xem xét phương thức OperatingSystemMXBean getSystemLoadAverage() chỉ có sẵn vì java 6 bạn có thể theo dõi nó và nếu nó giống nhau trong một thời gian xác định máy tính không hoạt động.

này giả nhàn rỗi về CPU nhàn rỗi

OperatingSystemMXBean operatingSystemMxBean = ManagementFactory.getOperatingSystemMXBean();

+0

Nó luôn trả về -1 trên Windows 7. Mọi gợi ý? – qasimzee

+0

Theo [JavaDoc] (http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/management/OperatingSystemMXBean.html). Nếu trung bình tải không có sẵn, giá trị âm sẽ được trả về. Bạn có thể không may mắn cho phương pháp này hoạt động trên Windows 7. –

Các vấn đề liên quan