好的 佬 ,我试一下
线程池可以交给spring管理。每次方法调用都新建线程池,会消耗大量资源。
使用inputStream.skip()并不可靠,高并发情况下会导致大量磁盘io操作。建议对文件做分割为小文件,投入queue,upload线程池只需要关注queue,读取文件上传。
ArrayList不是线程安全,建议转为线程安全的版本。
1 个赞
对头,我们s3就是这么弄得。后端给签名链接,前端上传
佬 转成图片再回复, 不能直接贴ai
多线程读同一个文件,太牛了吧。单个线程读文件绝对足够,你应该先读取数据然后再多线程提交。网络IO才是主要限制。
没有多线程读吧,多线程里面是提交操作
你在run方法里用FileInputStream就是多线程读
InitiateMultipartUploadRequest initiateMultipartUploadRequest = new InitiateMultipartUploadRequest(...)
长到离谱的变量定义,太经典了,这就是为什么我讨厌java
1 个赞
Java现在可以使用var了,并没多长
1 个赞
直接贴AI回答会被人举报,一举一个准,论坛守则里的规定
我就被人举报过
你这思路,不出问题才怪。
写这种流程很长的业务,首先用注释把流程图写出来。你这半点注释都没有,出问题才是正常的。
注释写完后,才开始给注释进行实现。期间一定要注意在变量发生改变时,以及进入一个步骤时,进行 log,用于在线 debug。
最后,建议用切片 sdk 进行上传,阿里有例子:
根据以上思路,你再试试,应该能解决。
1 个赞
你这个和直接获取全部文件一样了吧