Android-线程与多线程(了解)
什么是线程
Thread类中有这样的明确定义:线程是程序中执行的线程,Java虚拟机允许程序同时运行多个执行线程。
1.说到线程当然少不了进程,两者的区别是
线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础(百度百科)
2.线程的六个生命周期:新建,运行(可运行),阻塞,等待,计时等待和终止(来源:php中文网(www.php.cn))
1. 新建(new Thread)
当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。
2. 就绪(runnable)
线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源
3. 运行(running)
线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。
4. 堵塞(blocked)
由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态。
正在睡眠:用sleep(long t) 方法可使线程进入睡眠方式。一个睡眠着的线程在指定的时间过去可进入就绪状态。
正在等待:调用wait()方法。(调用motify()方法回到就绪状态)
被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)
5. 死亡(dead)
当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。
自然终止:正常运行run()方法后终止
异常终止:调用stop()方法让一个线程终止运行\
线程三种创建方式
Thread class
继承Thread类
- 自定义线程类继承
- 重写run()方法
- 调用start方法
Runnable
实现Runnable接口
- 重写run()方法
- 调用start方法
Callable
实现Callable接口
- 实现Callable接口 需要返回值
- 重写call方法
- 创建目标对象
什么是多线程
多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理” 。(百度百科)
多线程优点
1、使用线程可以把占据时间长的程序中的任务放到后台去处理 。
2、用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 。
3、程序的运行速度可能加快 。
4、在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等 。
5、多线程技术在IOS软件开发中也有举足轻重的作用 (百度百科)
多线程三种创建方式
- 继承 Thread
- 实现 Runable
- 实现 Callable
Android-线程与多线程(了解)相关推荐
- Android中的多线程(字节跳动)
文章目录 Handler机制(Android中的消息队列机制) Handler机制为Android系统解决了以下两个问题 Handler常用方法 Handler的使用 补充知识点 Handler原理 ...
- Android 线程池概念及使用
一:使用线程池的原因 在android开发中经常会使用多线程异步来处理相关任务,而如果用传统的newThread来创建一个子线程进行处理,会造成一些严重的问题: 在任务众多的情况下,系统要为每一个任务 ...
- Android线程管理(一)
线程通信.ActivityThread及Thread类是理解Android线程管理的关键. 线程,作为CPU调度资源的基本单位,在Android等针对嵌入式设备的操作系统中,有着非常重要和基础的作用. ...
- Android线程池封装库
目录介绍 1.遇到的问题和需求 1.1 遇到的问题有哪些 1.2 遇到的需求 1.3 多线程通过实现Runnable弊端 1.4 为什么要用线程池 2.封装库具有的功能 2.1 常用的功能 3.封装库 ...
- Android线程详解
现在大多数的移动设备已经变得越来越快,但是它们其实也不算是非常快.如果你想让你的APP既可以承受一些繁杂的工作而又不影响用户体验的话,那么必须把任务并行执行.在Android上,我们使用线程. 端一杯 ...
- android设计一个多线程和画图的程序小球,Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能实例...
本文实例讲述了Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能的方法.分享给大家供大家参考,具体如下: 1.布局界面 xmlns:tools="http://sc ...
- Android线程,线程池使用及原理博文参考
2019独角兽企业重金招聘Python工程师标准>>> 还是先回顾下Handler消息机制的原理图: 同样的还是先看看一篇对<Android开发艺术探索>的总结,对线程和 ...
- Android线程和线程Handler基础一览
线程概览 线程是任何多任务系统的基石.可以被认为是一个主进程的多个子进程.这样做的目的就是了增加应用的性能. 应用主线程 当一个Android应用被打开的时候,系统会默认开辟一个线程.这个线程就被叫做 ...
- Android开发之多线程编程Thread和Runnable使用
Android开发之多线程编程Thread和Runnable使用 Android可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:前者只要继承了Thread类同时覆写了 ...
- 《手Q Android线程死锁监控与自动化分析实践》
一.问题背景 手Q每个版本上线以后研发同学都会收到各种问题反馈.在跟进手Q内部用户反馈的问题时,发现多例问题,其表象和原因如下: 1.问题表象:"未读不消失"."图片不展 ...
最新文章
- 华南理工深度学习与神经网络期末考试_深度学习基础:单层神经网络之线性回归...
- simple c语言,C语言——指针(simple).ppt
- python异步生成器
- TensorFlow---基础---GFile
- 校内训练赛题解第三篇
- 就业模拟试题_Java(答案)
- 杭电4515小Q系列故事——世界上最遥远的距离
- 用js代码判断质数_在 JS 中判断,并不是都要用 ===
- Android框架Volley使用:Post请求实现
- 常用的apache access日志分析脚本
- C++_limits头文件
- 车牌识别用php算法,车牌识别算法实现及其代码实现之一:车牌区域检测
- ACWing 893. 集合-Nim游戏​​​​​​​ (SG函数模板题)
- 诺顿企业版 V11.0
- python画十字_Python解决十字消除棋
- RTT移植STM32之创建进程
- python怎么用拼音-用Python写一个拼音输入法
- SCI收录的文献类型与认证的文献类型
- win10下pyg离线安装
- 荣耀4a android art,荣耀4A黑科技大揭秘,真是给工程师给跪了!!