Java中的I/O优先级

3
我想使用Vista+功能中的I/O优先级。是否有一种平台无关的方法在Java中设置操作的I/O优先级(例如,在Java 7中的库中)?或者我应该退回到睡眠过滤器或JNx解决方案?其他平台是否具有类似的功能?

你认为什么才算是一个答案呢?是一个实际实现IO优先级的库吗? - Chris K
@darthcoder:希望回答更加积极一些,可能附带一些库链接之类的内容。我对当前的答案不满意。这是一个很好设置悬赏的情况。你有兴趣吗? - akarnokd
我认为我没有得到令人满意的答案,因此我接受了最接近的答案。无论如何,我还需要自己编写IO库来实现我的目标。感谢大家。 - akarnokd
3个回答

3
如果您确实需要使用此功能,并且确实想在Java中执行此操作,您可以始终使用Java JNI将JVM挂接到您自己的自定义C/C++实现的I/O处理程序中。它允许您编写本地(特定于操作系统)代码并从Java应用程序调用它。

谢谢,我已经知道了。我想要更方便的方法来做这件事。 - akarnokd

2

从谷歌搜索结果来看,目前似乎Java还不支持IO优先级。

Windows Vista支持,但我对此一无所知。它是基于进程还是更细粒度的调整?

自Linux 2.6.13版本开始,支持ionice(1),可以基于进程进行IO优先级设置。


Vista+拥有它的I/O句柄。我希望有一些库可以公开这个功能。谢谢你提供的Linux信息。 - akarnokd

2

这是Java难以支持的事情,因为它严重依赖于底层操作系统的功能。Java非常努力地提供跨多个平台工作的API,尽管不总是成功(但那是一个不同的话题)。

在这种情况下,Java API需要在多个版本的Windows、多个版本的Linux、Solaris和各种其他第三方平台上实现。设计一个可以映射到一系列操作系统平台功能的独立于平台的IO优先级模型将是困难的。

目前,我建议您寻找一个特定于平台的解决方案,超出Java范畴以进行必要的调整;例如使用Process等运行外部命令,或在启动JVM之前在包装脚本中完成工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接