我正在使用ftpClient.retrieveFile()
从FTP服务器下载文件,而另一个线程正在不断扫描目录以处理文件。我想知道这是否危险?可能是文件未完成下载并由其他线程处理吗?我应该使用.temp
后缀来保存临时文件,并在交易完成后重命名吗?
答案 0 :(得分:0)
通常,文件在创建后立即对其他进程或线程可见。因此,第二个线程可以在完成写入文件之前查看并处理文件。正确的做法是使用临时扩展名(如您提到的.temp)或临时目录。
在您的情况下,最合适的方法是使用某种同步机制,以便第二个线程在没有文件可处理时阻塞,而第一个线程在文件下载完成时通知第二个线程。 Java通过wait()
类的notify()
和Object
方法支持这些操作。