geekband android #5 第八周分享(多线程)
来源:互联网 发布:网络远程监控软件 编辑:程序博客网 时间:2024/05/23 18:19
1.关于线程的几个点:
何为线程?多线程?
一条线的顺序工作,顺序执行。
多条线一起各自进行其顺序工作。
为什么要使用?
可以极大提高效率。
原理?
1个,CPU-------->一条线。
多个,CPU------->多条线。
2.如何使用多线程:
Main/UI Thread and Worker Thread
Main/UI Thread and Worker Thread 之间的通信
线程安全:当资源被引用发生竞争时,就有可能出现线程不安全,如闪退,崩溃等。(解决:资源加锁)
4种多线程方法:runOnUiThread( )
textView.post( )
textView.postDelayed( )
new Handler(Looper.getMainLooper( )).post( )
3.具体用法:
这是四种多线程的开辟方法,但是不能在work线程中去触碰主线程的东西。如图中,mTextView是主线程的,在Work线程中对其进行set,会导致闪退。
这是具体在代码中开辟一个线程。
4.New Thread 的弊端:
每次New Thread对象性能差。
线程缺乏统一管理,可能无限制的新建线程,相互之间竞争,还可能占用过多的系统资源导致死机或oom。
缺乏更多功能,如定时执行,定期执行,线程中断。
5.线程池:ThreadPoolExecutor:
提升性能,创建或消耗对象时费CPU资源。
防止内存过渡消耗,控制活动线程数量,防止并发线程过多。
6.四种ThreadPoolExecutor:
newCachedThreadPool 创建一个可缓存的线程池,如果线程长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadPool 创建一个单线程优化的线程池,他只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO,LIFI,优先级)执行。
- geekband android #5 第八周分享(多线程)
- GeekBand--第八周分享
- geekband android #5 第九周分享(多进程)
- geekband android #5 第十周分享(传感器)
- geekband android #5 第十三周分享(Btimap优化)
- geekband android #5 第二周分享(布局、ListView)
- geekband android #5 第六周分享(SQL、Content Provider)
- geekband android #5 第七周分享(网络编程数据处理)
- geekband android #5 第十五周分享
- geekband android #5 第一周分享(初识Android)
- geekband android #5 第十四周分享(设计模式)
- geekband android #5 第四周分享(Service)
- GeekBand第八周笔记
- geekband android #5 第十二周分享(GC、内存优化、过度绘制等)
- geekband android #5 第三周分享(自定义控件、fragment、handler)
- geekband android #5 第五周分享(数据持久化技术)
- GeekBand--第二周分享
- GeekBand--第三周分享
- win10类型按钮
- Maven(1) -- install
- tcpcopy浅谈
- 多线程 《深入浅出 Java Concurrency》目录
- c++实验4——输出星号图
- geekband android #5 第八周分享(多线程)
- ECMAScript运算符_关系运算符&等性运算符&条件运算符&赋值运算符&逗号运算符
- HDU1576 A/B
- WebView的设置
- Service基础Activity与Service绑定
- AndroidStudio十佳常见编译或运行错误集锦
- 为一个下拉框绑定value和text
- 九宫格布局
- hbase异常:ClockOutOfSyncException