android 文件并发读写,Android下,rxJava+retrofit 并发上传文件和串行上传文件的效率为什么差不多?...

有个功能需要同时上传N个文件。代码如下:

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() {

@Override

public void onCompleted() {

}

@Override

public void onError(Throwable e) {

finishedLatch.countDown();

Log.e("UPLOAD FAILED -------->", fp);

}

@Override

public void onNext(UploadAttachJSON uploadAttachJSON) {

finishedLatch.countDown();

sb.append(uploadAttachJSON.url).append(",");

Log.e("UPLOADED IMAGE URL -->", uploadAttachJSON.url);

h.post(new Runnable() {

@Override

public 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个线程来同时上传这N个文件。

串行写法:

.subscribeOn(Schedulers.io()) 或者 用Observable.merge来合并这些请求。

结果发现并行和串行所花费的时间几乎都差不多。。 是不是和android底层有关?这些网络请求其实最后都被底层给block了,然后串行出去?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android长按home键关闭程序,应用程序退出后Dialog弹出

FreeMusic新增功能1.按住Home键&#xff0c;back键&#xff0c;或recent键 弹出提示框难点&#xff1a;1.当应用程序退出的时候&#xff0c;dialog 依赖所在Activity的context&#xff0c;而应用程序退出的时候 Activity销毁&#xff0c;所以context随之销毁解决方案&#xff1…

android下挂串口中断,请大神看看为啥串口中断无法打断定时器中断

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#includesbit RSP2^6;sbit RWP2^5;sbit LCDNP2^7;sbit xiangP1^5;sbit ledP2^1;#define GPIO P0#define uchar unsigned char#define uint unsigned intunsigned char date1,aa,ee,k,flag;unsigned char code table[]"time ov…

android手机浏览器研究报告,QQ浏览器Android客户端产品体验报告

概览手机&#xff1a;魅族MX3操作系统&#xff1a;Flyme OS 3.5.2(A19220)体验产品&#xff1a;QQ浏览器Android客户端软件版本&#xff1a;5.7.2.1400需求分析目标人群&#xff1a;所有移动互联网网民使用场景&#xff1a;用户使用手机上网浏览网页、看小说、看视频、购物&…

android 音乐 数据库,android从数据库中取音乐数据

android从手机数据库中取音乐数据直接贴代码public void getMp3(){list new ArrayList<>();Cursor mAudioCursor this.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,// 字段 没有字段 就是查询全部信息 相当于SQL语句中的 “ * ”…

labview利用簇模拟汽车控制_在LabVIEW应用程序中何时应采用面向对象技术 (翻译)...

在LabVIEW应用程序中何时应采用面向对象技术 (翻译)在LabVIEW中应用面向对象编程技术并不是一件特别容易的事情&#xff0c;尤其是先期的学习成本很高&#xff0c;但是在开发大型、复杂的、长期维护的程序时&#xff0c;使用面向对象技术会带来较好的回报。自从LabVIEW8.2版本引…

华gt2升级鸿蒙,华为手表GT2 Pro已开始内部测试,升级鸿蒙操作系统

据悉&#xff0c;华为鸿蒙应用已经开始在手表上布局。根据鸿蒙OS分布式计算的特点&#xff0c;它最终可以实现手机计算、手表优化显示、功能扩展和续航的需求。而华为WATCH GT2 Pro将成为华为首款支持鸿蒙应用的手表产品&#xff0c;不过要等到10月30日之后我们才能够购买到。在…

flutter 如何判断在哪个页面_Agora 教程:构建你的第一个 Flutter 视频通话应用

作者&#xff1a;张乾泽&#xff0c;声网Agora 工程师我们基于 Agora SDK 封装了 Agora Flutter SDK &#xff0c;开发者可以在 Flutter 应用中快速实现稳定、可靠的实时音视频通话、互动直播应用。本文将介绍如何使用 Agora Flutter SDK 快速构建一个简单的移动跨平台视频通话…

华为鸿蒙汽车自动驾驶,华为鸿蒙车机OS现身,自动驾驶再进化(一)

在2019年的上海车展上&#xff0c;华为首次公开宣布进入汽车领域。时隔一年多&#xff0c;在2020北京车展上我们将再次看到华为的身影。这一次&#xff0c;人们的疑问不再是“华为要干嘛”&#xff0c;而是变成了“华为干得怎么样了”。华为也用丰硕的成果给出了答案&#xff1…

.net core高并发_高并发下的Node.js与负载均衡

阅读本文约需要6分钟大家好&#xff0c;我是你们的导师&#xff0c;我每天都会在这里给大家分享一些干货内容(当然了&#xff0c;周末也要允许老师休息一下哈)。上次老师跟大家分享了下浅谈前端自动化构建的相关知识&#xff0c;今天跟大家分享浅谈前端自动化构建的相关知识参考…

android arm 寄存器,ARM汇编

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;Android Native 进程启动流程ARM传参&#xff0c;R0-R3传递前四个参数1. Thumb 指令集特点Thumb 指令集指令长度&#xff1a;16或32&#xff0c;16为为主Thumb-16 …

如何制作印章_用Word也能做出逼真的电子印章!简单3步!1分钟搞定

我们在办公的时候经常需要用到印章&#xff0c;以前可能是在纸上盖章&#xff0c;现在电子文档比较多&#xff0c;电子印章也开始流行使用&#xff0c;那么我们如何制作一个逼真的印章呢&#xff1f;很简单&#xff0c;用Word就可以搞定啦&#xff01;一、印章制作1、圆圈制作首…

鸿蒙唯独没有手机,想用鸿蒙OS,却没有华为手机?华为高层:还有1亿台设备可体验...

不再是PTT系统&#xff01;鸿蒙OS真的要来了&#xff0c;年内初步实现全场景交互从2019年开始&#xff0c;有关 鸿蒙OS 的消息越来越多&#xff0c;不仅公布了发展规划&#xff0c;也确定将适配多款机型&#xff0c;期待度直接拉满。可惜以目前的情况来看&#xff0c;鸿蒙OS 适…

@kafkalistener中id的作用_SSM框架(十一):Spring框架中的IoC(1)

控制反转 IOC&#xff1a;控制反转&#xff08;Inversion of Control&#xff0c;缩写为IoC&#xff09;&#xff0c;是面向对象编程中的一种设计原则&#xff0c;可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入&#xff08;Dependency Injection&#xff…

doxygen生成html文件,doxygen 的安装、配置、编译及使用(从源代码到文档)

doxygen 的安装、配置、编译及使用(从源代码到文档)1. 什么是 doxygen下面是 doxygen 主页上的一段说明文字Source code documentation generator toolDoxygen is a documentation system for C,C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors),Fortran, VHD…

keras优化算法_目标检测算法 - CenterNet - 代码分析

代码出处吃水不忘打井人&#xff0c;分析github上的基于keras的实现&#xff1a;xuannianz/keras-CenterNet​github.com代码主体结构模型训练的主函数流程如下所示&#xff0c;该流程也是使用keras的较为标准的流程。其中代码篇幅较大的是数据准备的部分&#xff0c;通常的代码…

html checkbox 禁用,js禁用checkbox

两种禁用checkbox的方法&#xff1a;代码示例:-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>function x(){// document.all.cb1.disabled true;// 方法一document.getElementsByName(“cb1”)[0].disabled true;//方法二}JavaScri…

html5 拍照 清晰度,html5强大的功能(一)

html5强大的功能(一)发布时间&#xff1a;2020-03-26 16:03html5得出现被传的神乎其神的&#xff0c;做前端的总是要跟随着潮流发展&#xff0c;不过在跟风之前还是想要了解一下html5真正的魅力所在。html5创建的目的是以一种标准和直观的UI标记语言来把web设计和开发变得容易起…

徽柏工业机器人_新松机器人股票(中国机器人公司排名是怎样的?)

他们有&#xff1a;新时达、万丰科技、沃德福、徽柏等。5、深圳市汇川技术股份有限公司 。椅子孟安波扔过去&孤覃白曼走出去$安徽埃夫特--奇瑞工业机器人沈阳新松zhidao---新松机器人其实国产机器人主体未有一家达到规模&#xff0c;道4、宁波均胜电子回股份答有限公司 &am…

python初学者用什么开发环境搭建_2019-04-11 python入门学习——配置机器及搭建开发环境...

#  在windows操作系统中搭建python 3.x版本的开发环境&#xff0c;开发工具为 Anaconda 3.#1.1  下载及安装Anaconda 3Anaconda的特点&#xff1a;集成性高&#xff0c;包含很多常用的开发软件包&#xff0c;省去下载和安装软件包的时间。下载地址&#xff1a;https://www.…

html5 视频 showtime,利用function showTime显示不出时间是为什么?

js-01.htmlvar todaynew Date();var yeartoday.getYear();var monthtoday.getMonth();var hourtoday.getHours();var minutetoday.getMinutes();function showTime(){document.getElementById("content").innerHTML"现在为您报时&#xff1a;";document.ge…