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

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 理解Android的异步消息处理机制
  3. 调用startactivityforresult后,onactivityresult响应
  4. 关于android双屏异显的一些总结和卡死的一些解决方法
  5. Android使用UncaughtExceptionHandler捕获异常
  6. Android(安卓)异步查询 AsyncQueryHandler .
  7. Andriod Service
  8. android 去锯齿
  9. Fragment(二)-----分析执行的过程篇

随机推荐

  1. Android应用程序的四个关键点
  2. android 窗口式activity
  3. Android简易注解View(java反射实现)
  4. Android中shape使用
  5. android makefile(android.mk)分析(转)
  6. Android平板开发注意点
  7. Android四款系统架构工具
  8. Android书籍分享
  9. Android中图片占用内存的计算
  10. Android中的几种网络请求方式详解