Java环境中,调用RunTime.exec()创建操作系统进程的时候,没有办法指定优先级。Thread.setPriority()倒是可以指定优先级,可是这个进程是在Java虚拟机里面的。
翻了翻,大牛们是说这个问题是Platform Specific,所以在Java环境中不提供解决办法。这个说法不怎么靠得住,文件系统同样是系统相关,Java不就支持的挺好。
有聪明人提出在Windows平台上可以借用 start.exe /LOW 来搞定这个事情,试了以下,完整的写法应该是:
cmd /c start /b /low yourcmd
cmd /c:后面的start貌似是个内部命令,类似cd,必须通过cmd 执行
start:启动一个新的窗口来执行命令
/b :不要实际的创建窗口
/low:以低优先级运行,其它还有
/normal 以一般优先级启动应用程序。
/high 以高优先级启动应用程序。
/realtime 以实时优先级启动应用程序。
/abovenormal 以超出常规优先级的方式启动应用程序。
/belownormal 以低出常规优先级的方式启动应用程序。
yourcmd:实际执行的命令行。
适用范围有限,Win2003及以上上没有问题,其它版本不确定。
翻了翻,大牛们是说这个问题是Platform Specific,所以在Java环境中不提供解决办法。这个说法不怎么靠得住,文件系统同样是系统相关,Java不就支持的挺好。
有聪明人提出在Windows平台上可以借用 start.exe /LOW 来搞定这个事情,试了以下,完整的写法应该是:
cmd /c start /b /low yourcmd
cmd /c:后面的start貌似是个内部命令,类似cd,必须通过cmd 执行
start:启动一个新的窗口来执行命令
/b :不要实际的创建窗口
/low:以低优先级运行,其它还有
/normal 以一般优先级启动应用程序。
/high 以高优先级启动应用程序。
/realtime 以实时优先级启动应用程序。
/abovenormal 以超出常规优先级的方式启动应用程序。
/belownormal 以低出常规优先级的方式启动应用程序。
yourcmd:实际执行的命令行。
适用范围有限,Win2003及以上上没有问题,其它版本不确定。