## Java 多线程
为了解决负载均衡问题,充分利用CPU资源.为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰.为了处理大量的IO操作时或处理的情况需要花费大量的时间等等,比如:读写文件,视频图像的采集,处理,显示,保存等
### 多线程的好处:
1. 使用线程可以把占据时间长的程序中的任务放到后台去处理
2. 用户界面更加吸引人,这样比如用户点击了一个按钮去触发某件事件的处理,可以弹出一个进度条来显示处理的进度
3. 程序的运行效率可能会提高
4. 在一些等待的任务实现上如用户输入,文件读取和网络收发数据等,线程就比较有用了.
### 多线程的缺点:
1. 如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.
2. 更多的线程需要更多的内存空间
3. 线程中止需要考虑对程序运行的影响.
4. 通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生
## 多线程的实现
1. 通过实现 Runnable 接口
2. 通过继承 Thread 类本身
## 线程的几个主要概念
在多线程编程时,你需要了解以下几个概念:
1. 线程同步
2. 线程间通信
3. 线程死锁
4. 线程控制:挂起、停止和恢复
## 多线程的使用
1. 有效利用多线程的关键是理解程序是并发执行而不是串行执行的。例如:程序中有两个子系统需要并发执行,这时候就需要利用多线程编程。
2. 通过对多线程的使用,可以编写出非常高效的程序。不过请注意,如果你创建太多的线程,程序执行的效率实际上是降低了,而不是提升了。
3. 请记住,上下文的切换开销也很重要,如果你创建了太多的线程,CPU 花费在上下文的切换的时间将多于执行程序的时间!
### 如何共享线程之间的数据
https://blog.csdn.net/hejingyuan6/article/details/47053409
https://blog.csdn.net/zhh1072773034/article/details/74240897?locationNum=8&fps=1
- 空白目录
- 自我介绍
- Android面试题
- Handler
- 网络请求框架
- 图片处理框架Picasso,Glide
- Android最佳性能实践OOM
- 异步:RxJava,AsyncTask
- View,ViewGroup事件分发
- 消息传递:EventBus
- HTTPS和HTTP的区别
- 进程间通信的方式
- HttpClient与HttpUrlConnection的区别
- 性能优化
- Java多线程
- Fragment状态保持和恢复
- 讲解一下Context
- JNI
- java虚拟机和Dalvik虚拟机的区别
- 线程sleep和wait有什么区别
- 保存Activity状态
- WebView与js交互(调用哪些API)
- 内存泄露检测,内存性能优化
- 布局优化
- 自定义view和动画
- 设计模式(单例,工厂,观察者。作用,使用场景)
- String,Stringbuffer,Stringbuilder 区别
- 开源框架,为什么使用,与别的有什么区别
- Android大厂面试题
- 爱奇艺
- 小米
- 腾讯
- 阿里
- 今日头条
- 共同问到的
- 其他问题
- 框架MVC、MVP、MVVM
- sleep和wait有什么区别
- React Native原理
- React Native面试题
- 数据结构
- Android开发
- 基础知识
- Java基础
- 数据结构
- 面向对象思想
- 设计模式
- 开发环境
- Android SDK
- Activity
- Service
- Broadcastreceiver
- Contentprovider
- ActionBar
- Fragment
- UI
- 通信
- 数据持久化
- 性能
- 调试
- 适配
- 测试
- 安全
- NDK
- 手机功能
- 第三方扩展
- 其他
- 2018 Java面试题
- Android(2017-2018)BAT面试题整理
- 2017下半年,一二线互联网公司Android面试题汇总
- 2018阿里Android面试题
- 一面
- 二面
- 三面