位置: 编程技术 - 正文

[置顶] android利用线程池高效实现异步任务([置顶]星陨计划)

编辑:rootadmin

推荐整理分享[置顶] android利用线程池高效实现异步任务([置顶]星陨计划),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:[置顶]星陨计划,[置顶]游戏名:chivalry2,[置顶]公主大人接下来是拷问时间31,[置顶]bilinovel,[置顶]bilinovel,[置顶]从lv2开始开挂的原勇者候悠闲的异世界生活,[置顶]JM259194,[置顶]电影名字《收件人不详》,内容如对您有帮助,希望把文章链接给更多的朋友!

不管是开发android应用程序还是java应用程序,异步任务都是经常用到的,尤其是android本身做为线程不安全,只要稍微耗时的操作都要用到异步任务,而无论是java还是android通用的异步任务开发以前无非就是利用Thread和Runnable来实现, android系统本身还有属于他自己的AsyncTask去专门处理异步任务.但其实这些都不是最高效的异步任务处理方法,尤其是任务有多个的情况下,以上几种方法都需要后台不停的去创建新的线程,并且要求我们自己去管理好线程的生命周期,否则很容易造成内存泄露.

而从 jdk1.5以后,我们可以使用线程池去高效的创建多个异步任务的同时,还不需要自己去管理线程的生命周期了.我们只需要专注于异步任务的业务逻辑代码和在适当的时候将线程池整体关闭,可以大大的提高整个应用的性能.

下面就来先看下线程池相关的一些经常要用到的类,这些类都包括:Executor, ExecutorService, AbstractExecutorService,ThreadPoolExecutorService,ScheduledExecutirService, Callable, Runnable等,常用到的相关类就是以上几个.下面我们来分析一下这些类的作用.

1.Executor, 一个接口,只提供了一个方法executor(Runnable command);提供了线程池最基本的功能,执行异步任务.

2.ExecutorService,也是接口,继承了Executor接口,并扩展了一些线程池应该具有的生命周期方法,源码(部分)如下: */ <T> Future<T> submit(Runnable task, T result); Future<?> submit(Runnable task); }

 3.AbstractExecutorService,线程池抽象类,提供了所有线程池类的基本实现,部分代码如下:

public <T> Future<T> submit(Callable<T> task) { if (task == null) throw new NullPointerException(); RunnableFuture<T> ftask = newTaskFor(task); execute(ftask); return ftask; }} 通过阅读源码可以知道:线程中处理的任务最终都是FutureTask类型的. 3.Executors,通过提供一系列的static方法,创建不同类型的线程池.源码不再拷贝.[置顶]
        android利用线程池高效实现异步任务([置顶]星陨计划)

 以上这些类基本构成了java线程池的整个框架,利用这几个类,可以使我们轻松的实现线程池的异步任务.下面以一个Demo来讲解基本的用法.

 最近有一个需求是这样的:从服务器下载体积较大的zip包到本地客户端中.并通过Notifycation通知用户文件下载的进度.思路:要从服务器下载东西,启动一个专门用来下载的Service,在Service中通过线程池开启异步下载任务并创建下载过程中不同状态的回调接口,用以通知用户下载进度.本Demo中为了实现上的方便,先实现了将文件从一个路径拷贝到另一个路径来模拟从服务器下载文件.(原理是一样的,下载文件即相当于从服务器拷贝一个文件到本地路径).

 下面看一下整个工程的结构:

 

各个类的作用:

  1. CopyTask,专门用来实现文件拷贝功能的类,没有其它任务业务.代码如下: 2.CopyManager类,用来负责创建线程池并向其中添加任务.代码如下: 3.IDownloadListener,监听不同状态下不同的回调执行.代码如下: 4.CopyService,文件下载服务,通过调用CopyManager去开始下载任务.不再贴源码,稍后会将整个Demo源码上传. Demo下载

vs 编译mosquitto win版本,开启websockets,实现消息推送 前言:因为之前没有怎么碰vs,只搞过cygwin,而cygwin上搞了好久都搞不定,以至于重新整理思路,这window上的版本应该怎么去编译。一直不知道怎么搞,

Android 编程下 Touch 事件的分发和消费机制 本文转自:

Android酷炫实用的开源框架(UI框架) Android酷炫实用的开源框架(UI框架)前言忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件

标签: [置顶]星陨计划

本文链接地址:https://www.jiuchutong.com/biancheng/382253.html 转载请保留说明!

上一篇:Android--VideoPlay--视频播放器

下一篇:vs2010 编译mosquitto win32版本,开启websockets,实现消息推送(vs2010编译器在哪里?)

  • 税收保全措施有金银首饰吗
  • 不征收增值税的有哪些
  • 购入车辆进项如何做账
  • 城建税计税依据扣除增值税期末留抵
  • 收到幼儿园园服费怎么做财务处理?
  • 旅游开发行业的会计怎么做
  • 研发支出的材料费
  • 资本公积金转增股本是利好吗
  • 福利企业发放职工集资利息是不是要交个人所得税
  • 煤炭企业在建工程核算探讨
  • 公司土地转让另外公司
  • 退回其他单位服务费怎么入账?
  • 借别人的公账转账犯法吗
  • 公司没有收入没开发票
  • 医药酒精现在要兑水喝吗
  • 企业所得税按季预缴怎么算
  • 税收分类编码里的劳务是劳务派遣的意思吗
  • 小微企业可以开9个点的专票吗
  • 小微企业所得税优惠政策最新2022
  • 中小企业固定资产管理存在的问题
  • 长期股权投资佣金手续费计入
  • 劳务和工资合并扣税吗
  • 长期待摊费用提前清理
  • 收到投资款怎么做记账凭证
  • 小规模纳税人如何申报增值税
  • 公司给部分员工交公积金
  • php html5
  • php composer自动加载
  • 仙鹤草的功效与作用与主治功能
  • Linux下使用quota命令管理磁盘空间的实例教程
  • lnmgr.exe是什么
  • 取得短期借款会计科目
  • 出售设备收到的现金属于什么活动
  • 基础知识讲解
  • 一次性劳务报酬所得如何扣税
  • 如何用php操作mysql
  • linux用mv文件移动指定文件
  • 成本核算的五个要求
  • 个人所得税手续费收入如何做账
  • 小规模纳税人季度不超30万怎么做账
  • 测验3: 基本数据类型 (第3周)
  • javascript 模块
  • 线程池中的一个线程执行完一个任务后
  • 房子补偿款
  • 灵动cfe
  • mongodb cond
  • 小微企业直接考察模式
  • 增值税无票收入负数预警值
  • 小规模纳税人有几种税率
  • 农民专业合作社属于什么经济类型
  • 加工企业怎么做账务处理
  • 冲减成本费用
  • 公司与公司之间的函怎么写
  • 进出口货物报关单
  • 商品销售企业成本包括
  • 货拉拉平台运费没有结打不通电话怎么办
  • 私企的会计都做什么
  • 一个完整的活动策划方案范文
  • Win Server 2008 r2 开启 Aero 桌面主题的方法
  • 使用删除命令删除硬盘文件后
  • usb3.0接口可以插优盘吗
  • 无windows什么意思
  • mac闹钟app
  • pps是什么文件
  • 联想笔记本win7装win10
  • Aero glass for Win8.1黑屏/不兼容弹窗的解决方法介绍
  • linux如何关闭ipv6防火墙
  • win10系统自定义设置
  • js动态引入css文件
  • extjs4 treepanel动态改变行高度示例
  • 什么是馥芮白
  • js实现登录功能
  • python提取xml的值
  • 会用python
  • android基础入门教程
  • rsa python3
  • jQuery iScroll.js 移动端滚动条美化插件第1/5页
  • javascript中var的作用
  • 北京煤火费2021标准
  • 如何进行税务筹划的方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设