Файлы, как правило, видны другим процессам или потокам, как только вы их создаете. Таким образом, ваш второй поток может увидеть и обработать файл, прежде чем вы завершите запись в него. Правильная практика - использовать временное расширение (например, упомянутый вами .temp) или временный каталог.
В вашем случае наиболее подходящим вариантом было бы использование некоторого механизма синхронизации, чтобы второй поток блокировался, когда нет файлов для обработки, и первый поток уведомлял второго, когда файл заканчивает загрузку. Java поддерживает эти операции с помощью методов wait()
и notify()
класса Object
.