有个功能需要同时上传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了,然后串行出去?

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

  1. 如何用usb电缆连接到计算机,如何使用USB串行电缆将文件从计算机传输到树莓派...

    第1步:为Raspberry Pi准备SD卡 完成Adafruit教程中演示的步骤,但要进行以下修改: 选择Raspbian发行版 跳过测试和配置 执行不要从SD卡读卡器/写入器中删除SD卡 不要不要 ...

  2. android 监控app 读写,Android端 APP性能监控实践

    如今大部分的APP测试工作关注点主要集中在功能的逻辑与交互上,由于各种原因(比如测试时间不够,测试手段有限等等),对APP客户端的性能数据往往比较忽视,然而经过移动互联网爆发式发展后,许多App功能差 ...

  3. android vold 挂载读写,Android——Vold磁盘挂载_主体构建(一)

    这段时间为了把mmc的一个block当成sdcard内置,学习了下android的vold磁盘挂载模块,记录一下(android 4.2.2). 一:Vold的编译及启动 vold的源码位置在andr ...

  4. android 挂载system 读写,android使用mount挂载/system/app为读写权限,删除或替换系统应用...

    注意:以下代码中#开头的则为需要执行的shell命令,其他的为打印的结果.#代表需要使用ROOT权限(su)执行,所以想要修改您android手机某个目录挂载为读写,首先需要有ROOT权限! 先要得到 ...

  5. sqlite多进程并发读写模式下,返回SQLITE_BUSY错误的处理方法

    SQLite作为一款小型的嵌入式数据库,本身没有提供复杂的锁定机制,无法内部管理多路并发下的数据操作同步问题,更谈不上优化,所以涉及到多路并发的情况,需要外部进行读写锁控制,否则SQLite会返回SQ ...

  6. android ble 连续读写,Android BLE实现对蓝牙的读写

    [实例简介] 通过修改官方的demo实现对蓝牙的读写操作,详细http://blog.csdn.net/chenfengdejuanlian/article/details/45787123 [实例截 ...

  7. pyth命令_如何:在Windows上设置用于从命令行运行.py文件的Python可执行文件

    pyth命令 Summary: When you type script.py at the Command Prompt on Windows, the Python executable used ...

  8. Android面试题之Android部分

    1. Activity 系列问题 1.1 绘制Activity生命周期流程图 1.2 介绍下不同场景下Activity生命周期的变化过程 启动Activity: onCreate()->onSt ...

  9. Python随笔:对 txt 文件进行读写,清除,删除操作

    Python随笔:对 txt 文件进行读写,清除内容,删除操作 文章目录 Python随笔:对 txt 文件进行读写,清除内容,删除操作 1.文件读写 1.1 读写文件前打开文件的两个方法 1.2 写 ...

最新文章

  1. Db4o结合Linq、Lambda表达式的简单示例
  2. Android 开发笔记“关闭默认键盘”
  3. 新基建带来新机遇!大数据产业发展需“四驱”推动
  4. 鸿蒙系统-手机-JS FA(Feature Ability)调用Java PA(Particle Ability)
  5. MOSS 2018 回顾:向 40 余个开源项目捐赠 97 万美元
  6. Microsoft JDBC Driver 4.0 for SQL Server
  7. yii 设置时区 不生效_Java 程序处理异地机房不同时区问题
  8. 二叉排序树求每个结点平衡因子程序
  9. 计算机环境变量怎么恢复默认,环境变量怎么还原
  10. 无法访问 文件目录损坏且无法读取
  11. php 世界时间,PHP 时区列表[时差]
  12. 2021年7月最新iOS面试题总结(答案篇)
  13. php的repl是什么,更好的 repl
  14. 【jquery】Chosen.jquery.js 插件动态加载数据问题
  15. 访问服务器上的图片显示404,vue run build打包之后服务器端访问图片404
  16. shell脚本回车换行_终于搞懂了回车与换行的区别
  17. 安装多可预览控件后,不能正常预览和修改该怎么办?
  18. 基于环信webim视频语音通话
  19. ElasticSearchTransportClient集成SearchGuard插件实现索引级别的权限管控
  20. 900页数学论文证明旋转的黑洞不会爆炸,丘成桐:30多年来广义相对论首次重大突破...

热门文章

  1. python实现真正的冒泡排序算法(时间复杂度优化版)!
  2. Python基础教程:list和tuple
  3. 传送门骑士修改服务器数据,传送门骑士修改经验 | 手游网游页游攻略大全
  4. mongodb3.2 java,MongoDB学习笔记:(3)、mongodb 3.2在java环境中的简单CRUD
  5. vs cmake opencv 远程 ubuntu 开发时:vs代码出现紫色波浪线且报错怎么办?
  6. 如何在VS一个工程里面测试不同代码?(创建不同项目,并将需要运行的项目设为启动项目)
  7. pycharm shadows name 'xxxx' from outer scope 警告
  8. asp用于取代什么技术_ASP是不是已经被淘汰了?
  9. python毒酒检测_检测OpenSSL漏洞的脚本
  10. 打开表时提示 Out of resources when opening file......错误解决