I'd like to use of the Vista+ feature of I/O prioritization. Is there a platform independent way of setting I/O priority on an operation in Java (e.g. a library, in Java 7) or should I revert to a sleeping-filter or JNx solution? (Do other platforms have similar feature?)
From a google search it does not seem that Java supports IO Prioritization yet.
Windows Vista does but I don't know anything about it. Is it per process or more fine-grained?
Linux since 2.6.13 supports ionice(1), which will set IO priority on a per process basis.
This is the kind of thing that is difficult for Java to support because it depends heavily on the capabilities of the underlying operating system. Java tries very hard to offer APIs that work the same across multiple platform. (It doesn't always succeed, but that's a different topic.)
In this case, a Java API would need to be implementable across multiple versions of Windows, multiple versions of Linux, Solaris, and various other third party platforms. Coming up with a platform independent model of IO prioritization that can be mapped to the functionality of the range of OS platforms would be hard.
For a now, I suggest that you look for a platform specific solution that goes outside of Java to make the necessary tuning adjustments; e.g. use Process et al to run an external command, or do the work in a wrapper script before starting your JVM.
If you really need to use this feature and you really want to do this in Java, you can always use Java JNI to hook the JVM into your own, custom c/c++ implementation of an I/O handler.
JNI allows you to write native (OS specific) code and call it from a Java application.