Если вы не желаете написать обертку JNI для , то выберите (2) самостоятельно или можете найти ее в сети. (Я смотрел кратко, и я его не нашел). Это, вероятно, будет очень интересной задачей, если вы хотите поддержать идею Java открытого файла (например, сопоставить Java InputStream
в файловом дескрипторе Unix) ,
Предпочтительный способ сделать это на Java, как вы отметили, - java.nio
. nio
действительно имеет некоторые ограничения. Наибольшая разница между nio
и выбирает (2), кроме отличий API, заключается в том, что nio
будет мультиплексировать только через сетевые сокеты. Например, вы не можете использовать его для многозадачности открытых файлов.
У Java нет эквивалента 'select()' или 'poll()'. Таким образом, вы застряли с NIO. – chrisaycock
Возможно, вы могли бы сказать, что вы пытаетесь сделать. Существует множество вариантов/фреймворков для такого рода вещей. –
Потоки Java очень легкие в Java 6. Часто один поток на источник - это самый простой способ обработки нескольких потоков. –