我想使用Vista+功能中的I/O优先级。是否有一种平台无关的方法在Java中设置操作的I/O优先级(例如,在Java 7中的库中)?或者我应该退回到睡眠过滤器或JNx解决方案?其他平台是否具有类似的功能?
从谷歌搜索结果来看,目前似乎Java还不支持IO优先级。
Windows Vista支持,但我对此一无所知。它是基于进程还是更细粒度的调整?
自Linux 2.6.13版本开始,支持ionice(1),可以基于进程进行IO优先级设置。
这是Java难以支持的事情,因为它严重依赖于底层操作系统的功能。Java非常努力地提供跨多个平台工作的API,尽管不总是成功(但那是一个不同的话题)。
在这种情况下,Java API需要在多个版本的Windows、多个版本的Linux、Solaris和各种其他第三方平台上实现。设计一个可以映射到一系列操作系统平台功能的独立于平台的IO优先级模型将是困难的。
目前,我建议您寻找一个特定于平台的解决方案,超出Java范畴以进行必要的调整;例如使用Process等运行外部命令,或在启动JVM之前在包装脚本中完成工作。