我需要從另一個Java應用程序單獨的JVM調用.jar文件,它非常耗費CPU,所以它應該與後臺優先級運行,以不影響其餘的系統。有沒有跨平臺的方法來做到這一點?跨平臺的方式來改變java進程優先
回答
簡單的答案是,沒有可移植的方式來改變Java中Process的優先級。 (Threads - yes,Processes - no。)
如果您的Java應用程序需要啓動一個新的JVM來運行CPU密集型應用程序,那麼很可能它已經不是完全可移植的。例如,您通常需要提供java
命令(或等效命令),-cp
參數(或等效參數),系統特定的JVM選項等的路徑名。因此,假設啓動JVM的命令是已經是非可移植的,那麼使用包含特定操作系統的東西來更改啓動的進程的優先級的包裝腳本來替換命令應該不會有問題。 (例如,對於UNIX或Linux,您可以簡單地使用nice
來啓動JVM。)
我不知道如何設置外部進程的優先級。然而Thread
有setPriority
方法,所以如果你控制的目標應用程序,你也許可以增加一個開關,告訴應用程序到自己的優先級設置爲最低:
theThread.setPriority(Thread.MIN_PRIORITY);
如果仍然影響系統,我建議你交錯一些簡短的sleep
ing來卸載CPU。
另一種選擇:
如果你把目標.jar
在「啓動」應用程序的classpath,你可以簡單地調用一個新創建的線程的jar文件的main
- 方法,然後使用上述方法設置優先級。 (即使你不控制目標jar文件的源代碼,這也應該起作用。)
我明白他需要產卵另一個過程,這種方法是針對一個線程,所以我不認爲它可以工作... – Persimmonium 2010-05-19 14:28:33
哦..嗯..好點。我想這隻有有意義,如果有可能添加一個開關到正在執行的程序。 – aioobe 2010-05-19 14:40:42
如果他有其他正在運行的進程的源,它可以將自己設置爲MIN_PRIORITY,對不對? – 2010-05-19 14:47:43
- 1. 在Python中改變進程優先級,跨平臺
- 2. 是nice()用來改變線程優先級還是進程優先級?
- 3. 安全的方式來改變一個NSOperation的優先級
- 4. C webserver中進程之間的跨平臺通信方式
- 5. 變化進程優先級
- 6. PHP:在後臺運行一個java程序的跨平臺方式
- 7. 創建Safari Webarchives的跨平臺方式
- 8. 跨平臺的方式來獲取圖標的Firefox的exe
- 9. 如何更改優先級的進程
- 10. 是否有一種跨平臺的方式來訪問JSP servlet?
- 11. 跨平臺的方式來獲得在python
- 12. 跨平臺的方式來關閉計算機
- 13. 任何跨平臺的方式來從頭創建cpp骨架?
- 14. 紅寶石跨平臺的方式來編寫EOF符號
- 15. 以跨平臺的方式設置Java類路徑
- 16. 使用Java 1.5跨平臺打開文件的方式
- 17. 如何以跨平臺的方式設置環境變量?
- 18. Java:跨平臺.flv播放
- 19. 跨平臺移動平臺編程
- 20. 跨平臺,跨瀏覽器的方式來播放Javascript的聲音?
- 21. C++跨平臺方式來定義64位無符號整數
- 22. 在android中更改進程優先級
- 23. 安全,在程序中運行gcc的跨平臺方式
- 24. MVVM查看優先的方式如何改變視圖
- 25. 每種vimrc跨平臺解決方案的優缺點?
- 26. 會改變進程優先級經常有副作用
- 27. 跨平臺修補程序
- 28. 跨平臺應用程序
- 29. 用html5跨平臺編程?
- 30. C++跨平臺多線程?
在*「寫入一次,隨處運行」*跨平臺感,否。但是在每個Un * x(包括OS X)和每臺Windows機器上製作一小段不可移植的代碼實際上並不難。 +1給Stephen C的回答。 – SyntaxT3rr0r 2010-05-19 15:03:40