背景
在使用多线程并发下载oss文件时,偶尔会出现多个线程下载同一文件,导致文件损坏。
例如:线程A和线程B同时下载文件txt到本地的/tmp/test.txt中,下载完成后文件被损坏,无法打开。
private void consumer() {
for (int i = 0; i < 15; i++) {
Thread consumer = new Thread(String.format("SstLoadTask-MainConsumer-Thread-%s", i)) {
@Override
public void run() {
DownloadFileRequest request = new DownloadFileRequest("bucket", "test.txt");
request.setDownloadFile("/tmp/test.txt");
OSS oss = new OSSClientBuilder().build();
oss.downloadFile(request);
}
};
consumer.start();
}
}
问题
各位大佬,请问上面操作导致文件损坏的原因是什么?是因为oss分片下载的时候把数据损坏了吗?