geekband android #5 第八周分享(多线程)

本文介绍了线程和多线程的概念及其重要性,解释了多线程的原理和使用方法,并探讨了线程安全问题。同时,文章详细阐述了四种多线程方法的应用场景,以及NewThread的局限性和线程池的优势。最后,文中对比了四种不同类型的线程池,并分析了它们的特点。

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,优先级)执行。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值