SlideShare a Scribd company logo
1 of 14
*
Android线程简介
王朋
概要
 AsyncTask/Thread/ThreadPoolExecutor
 linux线程历史
 linux线程调度
 Java、android线程模型
 懒汉单例模式
AsynTask
缺点:
 不同版本表现不一样
 没有区分task,容易阻塞
 使用有点麻烦
优点:
 官方实现,暂无已知bug,稳定。
ThreadPoolExecutor
 corePoolSize:线程池运行最大线程数
 maximumPoolSize:线程池允许运行的最大线程数
 BlockingQueue:任务队列。task数目超过限制大小在
corePoolSize的基础上新建线程运行任务。
优点:灵活
缺点:java库,android平台运行需要配置好参数、线程优先
级等。
Linux 线程历史
 LinuxThreads:
• clone() 系统调用,与调用进程共享相同的地址空间。
• 需要一个管理线程
• 性能、信号处理、调度和进程间同步原语方面都存在问题
Linux 线程历史
 NPTL( Native POSIX Thread Library ):
• Linux2.6版本之后线程实现都是nptl
• 性能高,创建10w个线程2s,linuxThreads需要15min
• NUMA 和 SMP支持良好
线程优先级, nice
Linux中,使用nice value(以下成为nice值)来设定一个进程
的优先级,系统任务调度器根据nice值合理安排调度。
 nice的取值范围为-20到19。
 通常情况下,nice的默认值为0。
 nice的值越大,进程的优先级就越低,获得CPU调用的机会
越少,nice值越小,获得CPU调用的机会越多。
线程优先级,java vs android
Android平台推荐使用Process代替java Thread类对应的api。
 Process.setPriority
 Thread.setPriority
CGroup
Linux CGroup全称Linux Control Group, 是Linux内核的一个
功能,用来限制,控制与分离一个进程组群的资源(如CPU、
内存、磁盘输入输出等)。是Docker基础技术。
Android使用其机制分配cpu资源:
 限制后台进程cpu时间片,5% 。
 限制线程组的cpu时间片?
查看命令: ps -P
Java线程模型
 1个java线程对应1个linux线程
 1个java线程栈64k(gDvm.stackSize),linux线程栈默认
2m
 Java内存模型
Android单线程模型
What
Ui线程、gpu RenderThread(传递DisplayList)
Why
 单线程没有并发问题,极大的降低了复杂度
how
 消息队列,epoll、pipe。
Java并发
 Java内存模型:可见性(volatile,lock)、原子性(lock)、
有序性(lock)
 懒汉单例模式:需要解决并发可见性、原子性问题。
参考资料
Linux
https://www.akkadia.org/drepper/nptl-design.pdf
http://coolshell.cn/articles/17049.html
http://www.ibm.com/developerworks/cn/linux/l-threading.html
Android
http://android.jobbole.com/82440/
http://droidyue.com/blog/2015/09/05/android-process-and-thread-schedule-nice/

More Related Content

What's hot

并发编程交流
并发编程交流并发编程交流
并发编程交流bluedavy lin
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查bluedavy lin
 
基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送OpenRestyCon
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)Lixun Peng
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇bluedavy lin
 
Btrace intro(撒迦)
Btrace intro(撒迦)Btrace intro(撒迦)
Btrace intro(撒迦)ykdsg
 
北京圣思园深入Java虚拟机 class loader
北京圣思园深入Java虚拟机 class loader北京圣思园深入Java虚拟机 class loader
北京圣思园深入Java虚拟机 class loaderMedivh2011
 
JVM内容管理和垃圾回收
JVM内容管理和垃圾回收JVM内容管理和垃圾回收
JVM内容管理和垃圾回收Tony Deng
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130Jinrong Ye
 
Entity Framework實戰
Entity Framework實戰Entity Framework實戰
Entity Framework實戰國昭 張
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Gelis Wu
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流Edward Lee
 
Design realization and application of RBD NBD - Wang Li
Design realization and application of RBD NBD - Wang LiDesign realization and application of RBD NBD - Wang Li
Design realization and application of RBD NBD - Wang LiCeph Community
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查bluedavy lin
 
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇bluedavy lin
 
Cinder snapshot and backup
Cinder snapshot and backupCinder snapshot and backup
Cinder snapshot and backupFelix Ma
 

What's hot (20)

并发编程交流
并发编程交流并发编程交流
并发编程交流
 
笔记
笔记笔记
笔记
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查
 
基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇
 
Btrace intro(撒迦)
Btrace intro(撒迦)Btrace intro(撒迦)
Btrace intro(撒迦)
 
Class loader
Class loaderClass loader
Class loader
 
北京圣思园深入Java虚拟机 class loader
北京圣思园深入Java虚拟机 class loader北京圣思园深入Java虚拟机 class loader
北京圣思园深入Java虚拟机 class loader
 
JVM内容管理和垃圾回收
JVM内容管理和垃圾回收JVM内容管理和垃圾回收
JVM内容管理和垃圾回收
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
 
Entity Framework實戰
Entity Framework實戰Entity Framework實戰
Entity Framework實戰
 
Split lock
Split lockSplit lock
Split lock
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流
 
Design realization and application of RBD NBD - Wang Li
Design realization and application of RBD NBD - Wang LiDesign realization and application of RBD NBD - Wang Li
Design realization and application of RBD NBD - Wang Li
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查
 
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇
 
Cinder snapshot and backup
Cinder snapshot and backupCinder snapshot and backup
Cinder snapshot and backup
 

Similar to Android线程简介

Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用hugo
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略Will Huang
 
Make your DVR playground using DevStack
Make your DVR playground using DevStackMake your DVR playground using DevStack
Make your DVR playground using DevStackJiang Jun
 
Golang 高性能实战
Golang 高性能实战Golang 高性能实战
Golang 高性能实战rfyiamcool
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
Introduction to NodeJS
Introduction to NodeJSIntroduction to NodeJS
Introduction to NodeJSTechParty@UIC
 
Notes of jcip
Notes of jcipNotes of jcip
Notes of jcipDai Jun
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构Cosey Lee
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍Tianwei Liu
 
Big Java, Big Data
Big Java, Big DataBig Java, Big Data
Big Java, Big DataKuo-Chun Su
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
Ian .net async programming
Ian .net async programmingIan .net async programming
Ian .net async programmingLearningTech
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化衡锋 阳
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveOpenCity Community
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7Justin Lin
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎frogd
 

Similar to Android线程简介 (20)

Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
Multithread
MultithreadMultithread
Multithread
 
Make your DVR playground using DevStack
Make your DVR playground using DevStackMake your DVR playground using DevStack
Make your DVR playground using DevStack
 
Golang 高性能实战
Golang 高性能实战Golang 高性能实战
Golang 高性能实战
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
Introduction to NodeJS
Introduction to NodeJSIntroduction to NodeJS
Introduction to NodeJS
 
Notes of jcip
Notes of jcipNotes of jcip
Notes of jcip
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 
Big Java, Big Data
Big Java, Big DataBig Java, Big Data
Big Java, Big Data
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
Ian .net async programming
Ian .net async programmingIan .net async programming
Ian .net async programming
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
Ali-tomcat
Ali-tomcatAli-tomcat
Ali-tomcat
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 

More from 朋 王

有钱Android索引优化调研总结
有钱Android索引优化调研总结有钱Android索引优化调研总结
有钱Android索引优化调研总结朋 王
 
Android系统内存管理介绍(上)
Android系统内存管理介绍(上)Android系统内存管理介绍(上)
Android系统内存管理介绍(上)朋 王
 
Json解析库性能评测
Json解析库性能评测Json解析库性能评测
Json解析库性能评测朋 王
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view朋 王
 
introduce Okhttp
introduce Okhttpintroduce Okhttp
introduce Okhttp朋 王
 
networking performance
networking performancenetworking performance
networking performance朋 王
 
Android+bitmap优化
Android+bitmap优化Android+bitmap优化
Android+bitmap优化朋 王
 

More from 朋 王 (7)

有钱Android索引优化调研总结
有钱Android索引优化调研总结有钱Android索引优化调研总结
有钱Android索引优化调研总结
 
Android系统内存管理介绍(上)
Android系统内存管理介绍(上)Android系统内存管理介绍(上)
Android系统内存管理介绍(上)
 
Json解析库性能评测
Json解析库性能评测Json解析库性能评测
Json解析库性能评测
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view
 
introduce Okhttp
introduce Okhttpintroduce Okhttp
introduce Okhttp
 
networking performance
networking performancenetworking performance
networking performance
 
Android+bitmap优化
Android+bitmap优化Android+bitmap优化
Android+bitmap优化
 

Android线程简介