Вы можете использовать темы.
Поместите код для загрузки и обновления файла RandomAccessFile в Thread / Runnable и запустите несколько его экземпляров.
Используйте глобальный счетчик (синхронизированный доступ) для отслеживания того, сколько потоков завершило загрузку, и заставьте основной поток ждать, пока все потоки не увеличат счетчик, прежде чем закрывать файл.
Обязательно синхронизируйте весь доступ к RandomAccessFile, чтобы поток A не мог вызвать seek(somePosition)
, пока поток B записывает в другую часть файла.