Tôi cần gọi tệp .jar trong JVM riêng biệt từ một ứng dụng java khác, và nó rất tiêu thụ CPU, vì vậy nó nên chạy với mức ưu tiên nền để không ảnh hưởng đến phần còn lại của hệ thống. Có phương pháp đa nền tảng nào để làm điều này không?Cách đa nền tảng để thay đổi ưu tiên quá trình java
Trả lời
Câu trả lời đơn giản là không có cách di động nào để thay đổi mức độ ưu tiên của Quy trình trong Java. (Chủ đề - có, Quy trình - không.)
Nếu ứng dụng Java của bạn cần khởi động một JVM mới để chạy ứng dụng chuyên sâu của CPU, thì cơ hội là nó chưa hoàn toàn di động. Ví dụ, bạn thường sẽ cần phải đặt tên đường dẫn của lệnh java
(hoặc tương đương), một đối số -cp
đối số (hoặc tương đương), tùy chọn JVM cụ thể của hệ thống, v.v. Vì vậy, giả sử rằng lệnh để khởi chạy JVM là đã không di động, nó hầu như không quan trọng nếu bạn thay thế lệnh bằng một kịch bản lệnh bao hàm những điều cụ thể của OS để thay đổi mức độ ưu tiên của quá trình được khởi chạy. Quay lại đầu trang (Ví dụ: đối với UNIX hoặc Linux, bạn có thể chỉ cần sử dụng nice
để khởi chạy JVM.)
Tôi không biết cách đặt mức độ ưu tiên cho quy trình bên ngoài. Tuy nhiên Thread
có một phương pháp setPriority
, vì vậy nếu bạn kiểm soát các ứng dụng mục tiêu, bạn có lẽ có thể thêm một công tắc, nói với các ứng dụng để thiết lập ưu tiên riêng của mình để tối thiểu:
theThread.setPriority(Thread.MIN_PRIORITY);
Nếu nó vẫn ảnh hưởng đến hệ thống, tôi đề nghị bạn xen kẽ một số ngắn sleep
ing để giảm tải CPU.
Một tùy chọn khác:
Nếu bạn đặt mục tiêu .jar
trong classpath của ứng dụng "bắt đầu", bạn có thể chỉ đơn giản là gọi main
-method của jar-file trong một thread mới được tạo và sau đó đặt mức độ ưu tiên bằng phương pháp trên. (Điều này sẽ hoạt động ngay cả khi bạn không kiểm soát mã nguồn của tệp jar mục tiêu.)
Tôi hiểu anh ta cần phải sinh ra một quá trình khác, và phương pháp này là cho một sợi, vì vậy tôi don 'nghĩ rằng nó có thể làm việc ... – Persimmonium
oh .. hmm .. điểm tốt. Tôi cho rằng điều này chỉ có ý nghĩa sau đó, nếu có khả năng thêm một chuyển đổi cho chương trình đang được thực hiện. – aioobe
Nếu anh ta có nguồn của quá trình khác đang chạy, nó có thể tự đặt thành MIN_PRIORITY, đúng không? –
- 1. Thay đổi ưu tiên quy trình bằng Python, nền tảng chéo
- 2. ưu tiên quá trình thay đổi trong android
- 3. Thay thế đa nền tảng cho py2exe
- 4. Cách đa nền tảng để mở tệp bằng Java 1.5
- 5. Truy cập webcam đa nền tảng
- 6. Cách đa nền tảng tối ưu để xử lý các chuỗi Unicode trong C++ là gì?
- 7. Trình tạo dự án đa ngôn ngữ đa nền tảng?
- 8. BitVM bitcode đa nền tảng
- 9. Quy trình con đa nền tảng với cửa sổ ẩn
- 10. Trình xử lý sự cố đa nền tảng
- 11. (Đa nền tảng) Lập trình 3D với C# (mono)
- 12. Bộ hẹn giờ nhanh, đa nền tảng?
- 13. Thư viện vẽ đa nền tảng
- 14. Phát triển đa nền tảng với GLKit?
- 15. Thay đổi Ưu tiên JavaQueue thành Max PQ
- 16. Làm cách nào để thay đổi mức độ ưu tiên của một quy trình?
- 17. python đa nền tảng di động
- 18. Java: Queue ưu tiên
- 19. Cách đa nền tảng để lấy PID bằng tên quy trình trong python
- 20. Làm cách nào để phát triển trình đọc mã QR đa nền tảng?
- 21. Làm cách nào để nhúng trình xem PDF vào ứng dụng C++ đa nền tảng?
- 22. Linux & C: Cách đặt mức độ ưu tiên đọc tệp trong chương trình đa tiến trình?
- 23. GUI đa nền tảng/SQL tốt nhất?
- 24. Làm thế nào để viết một chương trình đa nền tảng?
- 25. Làm thế nào để viết một chương trình đa nền tảng?
- 26. Lợi ích của nền tảng Java 64bit
- 27. Cách chụp ảnh màn hình bằng FireMonkey (đa nền tảng)
- 28. Chuyển các thư viện C++ đa nền tảng sang nền tảng Windows Phone 8
- 29. Nền tảng mua sắm trực tuyến đa nhà cung cấp
- 30. Phát triển trò chơi đa nền tảng, với các nhà phát triển trên nhiều nền tảng
trong * "viết một lần, chạy ở mọi nơi" * ý nghĩa đa nền tảng, không. Nhưng tạo một đoạn mã không di động nhỏ sẽ hoạt động trên mọi Un * x (bao gồm OS X) và mọi máy tính Windows thực sự không khó. +1 cho câu trả lời của Stephen C. – SyntaxT3rr0r