JAVA多线程 #
创建线程
java有原生的线程,但是一般来说都是使用的是线程池来操作,比较方便。
ExecutorService executorService = Executors.newFixedThreadPool(16);
之后直接往线程池加需要执行的任务就行了
executorService.execute\(\(\)\-\>{
ByteArrayInputStream partStream = new ByteArrayInputStream\(onceReadyBytes\);
UploadPartRequest uploadPartRequest = new UploadPartRequest\(\).withBucketName\("embeddedproxy\-1252616609"\).
.withKey\("mirrorFile/MDK529.EXE"\).withUploadId\(uploadId\).withPartNumber\(finalPartNumber\)
.withInputStream\(partStream\).withPartSize\(finalReadByte\);
UploadPartResult uploadPartResult = cosClient.uploadPart\(uploadPartRequest\);
System.out.println\("上传完成, etag:"\+uploadPartResult.getETag\(\)\);
partETags.add\(new PartETag\(finalPartNumber, uploadPartResult.getETag\(\)\)\);
}\);
等待线程结束
主要有三种方法:1.是操作系统原理提高的信号量,每个线程完了就把信号量减1, java叫 CountDownLatch
2.是调用线程池的shutdown方法。
3.是用 invokeAll方法
4.是用 ExecutorCompletionServicce
参考