多线程的那些事
- 何为线程、多线程
线程:比进程更小的执行单元,每个进程可能有多条线程,线程需要放在一个 进程中才能执行,线程由程序负责管理,而进程则由系统进行调度!
多线程的理解:并行执行多个条指令,将CPU时间片按照调度算法分配给各个 线程,实际上是分时执行的,只是这个切换的时间很短,用户感觉到"同时"而已! - 为什么要使用多线程
ANR(Application Not Responding) - 什么时候使用多线程
- Android中的多线程
如何使用多线程
- Main/UI Thread和Worker Thread
- Main/UI Thread和Worker Thread之间的通信
- Thread/Runnable
- 线程安全
Activity.runOnUiThread(Runnable)
//更新UI 只有在Acitivity中才能使用
TestActivity.this.runOnUiThread(new Runnable() {
@Override public void run() {
textView.setText("经过千辛万苦终于找到你了!");
} });
View.post(Runnable)在onAttachedToWindow(onResume在其前面后的生命周期使用才会有效---View.post()这个方法就必须等onAttachedToWindow ()这个方法执行过了才行
textView.post(new Runnable() {
@Override public void run() {
textView.setText("经过千辛万苦终于找到你了!");
}
});
View.postDelayed(Runnable,long) - Handler
- AsyncTask
同步代码块(synchronized block)
new Thread()VSThreadPooleExecutor
- New Thread() 的弊端
每次new Thread新建对象性能差
线程缺乏统一管理,可能无限制新建线程,相互之间竞争,可能占用过多资源导致死机或OOM。
缺乏更多功能,如定时执行、定期执行、线程中断。 - ThreadPooleExecutor-线程池(线程管理者)
引入的好处
1)提升性能。创建和消耗对象时费CPU资源。
2)防止内存过度消耗。控制活动线程的数量,防止并发线程过多。