| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> android开发中的多线程与线程池 -> 正文阅读 |
|
[移动开发]android开发中的多线程与线程池 |
1? 多线程的意义 (1)提高用户体验或者避免ANR(Application is not responding) (2)异步 ?????? 在应用程序中,有些情况下并不一定需要同步阻塞去等待返回结果,可以通过多线程来实现异步,如异步加载云端图片 2? 多线程的创建 (1)继承Thread类实现多线程 通过继承Thread类不能用一个实例创建多个线程,一般不能资源共享,但是也可以共享Thread类是static变量 (2)实现Runnable接口方式实现多线程 ???? 调用Thread类创建线程时,可以使用同一个Runnable实例,则创建的多线程对象也是共享的,所以实现Runnable接口适合于资源共享 3? 线程池的应用 (1)new Thread的弊端 ? ? ?? a)每次new Thread新建对象性能差 ?????? b)线程缺乏统一管理,可能无限制新建线程,相互竞争,可能占用过多系统资源导致死机或内存溢出oom ?????? c)缺乏更多功能,如定时执行、定期执行、线程中断 (2)线程池好处 ??????? a)重用存在的线程,减少对象创建、消亡的开销,性能佳 ??????? b)可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞 ??????? c)提供定时执行、定期执行、单线程、并发数控制等功能 4. 线程池实现方式 (1)newCachedThreadPool ???? 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 (2)newFixedThreadPool ???? 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 (3)newSingleThreadPool ???? 创建一个单线程化的线程池,只会用唯一的工作线程来执行任务,保证所有任务按照指定的顺序(FIFO LIFO 优先级)执行。 (4)newScheduledThreadPool ???? 创建一个定长线程池,支持定时、周期性任务执行。 案例:
? |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:53:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |