Есть ли в Java настоящий асинхронный файловый аксессор?

Я хочу асинхронно читать / писать на необработанное устройство (которое является просто файлом в Linux), и я использовал java.nio.channels.AsynchronousFileChannel.

Но это «поддельный асинхронный», потому что AsynchronousFileChannel использует пул потоков для выполнения задач чтения / записи. Фактически он вызывает синхронизированный интерфейс чтения / записи, предлагаемый ОС.

Что мне действительно нужно, так это настоящая асинхронная реализация, которая называется io_submit в Linux.

Но я не могу найти его в jdk или любых других репозиториях, таких как guava или apache.

Итак, мой вопрос таков:

  1. Существует ли в java реализация асинхронного средства доступа к файлам на основе собственного интерфейса io_submit?

  2. Если нет, то почему я не вижу никого, кому это нужно?

Разве это не противоречит самой «платформенно-независимой» природе Java?

rmlan 02.05.2018 03:49

rmlan, может существовать асинхронная реализация, которая использует io_submit в Linux и потоки на платформах, которые не поддерживают этот механизм - это не должно нарушать независимость платформы.

tgdavies 02.05.2018 04:20

почему ты хочешь сделать это? Что это позволит вам сделать такое, чего не позволяет AsynchronousFileChannel?

tgdavies 02.05.2018 04:21

Вот обсуждение: mail.openjdk.java.net/pipermail/nio-discuss/2011-July/…

tgdavies 02.05.2018 04:25

@tgdavies, спасибо, я видел это обсуждение. Но причина, по которой я этого хочу, заключается в том, что если я отключу кеш файловой системы и дисковый буфер, реализация потоков не сможет дать хорошую производительность по сравнению с io_submit.

T.Tony 02.05.2018 04:48
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
150
1

Ответы 1

In java, is there an existing implementation of asynchronous file accessor based on the native io_submit interface

Отсутствует в библиотеках Java по умолчанию на момент написания (2019 г.). Я сомневаюсь, что есть большой энтузиазм по внедрению оболочки Java io_submit() в библиотеки по умолчанию, потому что:

If not, why can't I see anyone else who need it ?

Люди, которым это очень нужно, воссоздали обертки (например, см. https://github.com/zrlio/jaio). Однако поддержка KAIO была бы единственным делом Linux и, следовательно, не такой переносимой (что немного противоречит ключевой концепции Java).

Другие вопросы по теме