国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android下,rxJava+retrofit 并發(fā)上傳文件和串行上傳文件的效率為什么差不多?

瀏覽:179日期:2024-02-28 16:07:55

問(wèn)題描述

有個(gè)功能需要同時(shí)上傳N個(gè)文件。代碼如下:

ApiService as = ApiManager.getApiService(); final ExecutorService es = Executors.newFixedThreadPool(9);final int count = Bimp.tempSelectBitmap.size();final CountDownLatch finishedLatch = new CountDownLatch(count);final long start = System.currentTimeMillis();for (int k = 0; k < count; k++) { final String fp = Bimp.tempSelectBitmap.get(k).getImagePath(); RequestBody fbody = RequestBody.create(MediaType.parse('image/*'), new File(fp)); as.uploadAttach(fbody) .subscribeOn(Schedulers.from(es)) .observeOn(Schedulers.computation()) .subscribe(new Subscriber<UploadAttachJSON>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) { finishedLatch.countDown(); Log.e('UPLOAD FAILED -------->', fp);}@Overridepublic void onNext(UploadAttachJSON uploadAttachJSON) { finishedLatch.countDown(); sb.append(uploadAttachJSON.url).append(','); Log.e('UPLOADED IMAGE URL -->', uploadAttachJSON.url); h.post(new Runnable() {@Overridepublic void run() { pd.setMessage('正在上傳... ' + (count - finishedLatch.getCount()) + '/' + count);} });} });}try { finishedLatch.await();} catch (InterruptedException e) { e.printStackTrace();}long end = System.currentTimeMillis();Log.e('IMAGE UPLOAD COMPLETED', (end - start) + '');es.shutdown();

以上為并行的寫法。從線程池中拿出N個(gè)線程來(lái)同時(shí)上傳這N個(gè)文件。

串行寫法: .subscribeOn(Schedulers.io()) 或者 用Observable.merge來(lái)合并這些請(qǐng)求。

結(jié)果發(fā)現(xiàn)并行和串行所花費(fèi)的時(shí)間幾乎都差不多。。 是不是和android底層有關(guān)?這些網(wǎng)絡(luò)請(qǐng)求其實(shí)最后都被底層給block了,然后串行出去?

問(wèn)題解答

回答1:

設(shè)備的網(wǎng)速是不是有限制

回答2:

有很多因素需要考慮1.自己的代碼實(shí)現(xiàn)2.設(shè)備底層的傳輸實(shí)現(xiàn)3.服務(wù)器接收數(shù)據(jù)的代碼實(shí)現(xiàn)

任何一個(gè)部分不是并發(fā)的,最后的結(jié)果就不是并發(fā)的

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 临城县| 迁西县| 贵南县| 丰都县| 雅安市| 曲松县| 绥化市| 乡宁县| 遵义县| 承德市| 阿拉尔市| 肥乡县| 凌源市| 济南市| 寿光市| 乌海市| 尉氏县| 天长市| 苏尼特左旗| 清丰县| 巨野县| 内丘县| 平阴县| 涟源市| 巴彦淖尔市| 蒙自县| 阿拉善右旗| 永福县| 娄烦县| 威海市| 马尔康县| 高淳县| 江源县| 永丰县| 洛阳市| 扬州市| 肃南| 郁南县| 沛县| 酒泉市| 恭城|