Я пытался понять, как File.renameTo()
работает в Java, и я достиг следующего метода в UnixFileSystem.java
(я на macOS).
private native boolean rename0(File f1, File f2);
Я понимаю, что (пожалуйста, исправьте, если яя не прав) native
означает, что JVM вызывает код / библиотеку, написанную на другом языке.Итак, где / как я могу или, если возможно, увидеть его реализацию?
Мне любопытно увидеть его реализацию, чтобы подтвердить, могу ли я использовать его для моего следующего варианта использования.
Iнеобходимо запустить приложение Java на двух (или более) разных серверах, которые опрашивают файлы в одном и том же каталоге (общая файловая система), и только один экземпляр (сервер) должен обрабатывать определенный файл.Всякий раз, когда приложение на каком-либо из серверов видит файл, оно пытается перейти в какой-либо другой каталог, и, если перемещение прошло успешно (определяется логическим , возвращенным методом File.renameTo()
), этот сервер начинает обработку на этихсодержимое файла (точная пакетная обработка).Я провел быстрый тест с тремя различными экземплярами, опрашивающими один каталог (генерируя новые файлы со скоростью 1000 файлов в секунду), и результаты были такими, как ожидалось.Я просто хочу подтвердить, масштабируется ли он.
Обратите внимание, что я не перемещаю реальный файл, а файл с нулевым байтом, который называется что-то вроде <actual-filename>.DONE
, который создается после завершения копирования файла из источника.