美文网首页Android知识点和文章分享
Android中关于进程和线程

Android中关于进程和线程

作者: 正阳Android | 来源:发表于2017-12-26 14:56 被阅读10次

1.进程是系统进行资源分配和调度的基本单元,是线程的容器,可以被认为是程序的实体.

2.线程是一种轻量级的进程,一个进程可以创建多个线程,这些线程内部各有自己的堆栈区域和局部变量等属性,并且可以访问共享的内存变量.

            使用多线程的好处

1.使用多线程可以减少程序的响应时间.

2.与进程相比,线程的创建和切换消耗更小,并且多线程在数据共享方面效率非常高.

3.多线程可以重复利用计算机资源.

4.多线程的使用使得程序便于理解和维护.

           线程的5种状态

1.NEW,创建状态;

   程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时它已经有了相应的内存空间和其他资源,但还处于不可运行状态。

2.就绪状态 Runnable状态

新建线程对象后,调用该线程的 start() 方法就可以启动线程。当线程启动时,线程进入就绪状态。此时,线程将进入线程队列排队,等待cpu获取资源

3. 运行状态 Run

当就绪状态被调用并获得处理器资源时,线程就进入了运行状态。此时,自动调用该线程对象的 run() 方法。run() 方法定义该线程的操作和功能。

4. 阻塞状态 Blocking

一个正在执行的线程在某些特殊情况下,如被人为挂起或需要执行耗时的输入/输出操作,会让

CPU 暂时中止自己的执行,进入阻塞状态。在可执行状态下,如果调用sleep(),suspend(),wait()

等方法,线程都将进入阻塞状态,发生阻塞时线程不能进入排队队列,只有当引起阻塞的原因被消除后,线程才可以转入就绪状态。

5.死亡状态 

线程调用 stop() 方法时(stop方法已过时)或 run() 方法执行结束后,即处于死亡状态。处于死亡状态的线程不具有继续运行的能力。

可能也会因为异常导致run方法结束,此时线程也是处于死亡状态.

另外,也可能会有waiting等待状态(线程暂时不活动,并且不运行任何代码,这将消耗最少的资源,等待被调度器重新激活);超时等待状态Timed waiting状态,和等待状态不同的是,超过指定的时间自行返回的.

             在java中每次运行至少启动几个线程?

答;至少启动两个线程,我们知道java的垃圾回收机制和内存分配是独立的;每次java启动一个类的时候,就是创建了一个JVM,每一个jvm实际上就是启动了一个线程,而java是具有垃圾回收机制的,所以至少启动了两个线程.一个是main线程一个是垃圾回收线程.

            线程的强制执行

在线程操作中,可以使用 join() 方法让一个线程强制运行,线程强制运行期间,其他线程无法运行,必须等待此线程完成之后才可以继续执行。

          线程的休眠

在程序中允许一个线程进行暂时的休眠,直接使用 Thread.sleep() 即可实现休眠。

        线程的礼让

在线程操作中,也可以使用 yield() 方法将一个线程的操作暂时让给其他线程执行 

        线程的优先级

在 Java 的线程操作中,所有的线程在运行前都会保持在就绪状态,那么此时,哪个线程的优先级高,哪个线程就有可能会先被执行。

        一个多线程的程序如果是通过 Runnable 接口实现的,则意味着类中的属性被多个线程共享,那么这样就会造成一种问题,如果这多个线程要操作同一个资源时就有可能出现资源同步问题。

解决方法:

同步代码

死锁

同步可以保证资源共享操作的正确性,但是过多同步也会产生问题。例如,现在张三想要李四的画,李四想要张三的书,张三对李四说“把你的画给我,我就给你书”,李四也对张三说“把你的书给我,我就给你画”两个人互相等对方先行动,就这么干等没有结果,这实际上就是死锁的概念。

所谓死锁,就是两个线程都在等待对方先完成,造成程序的停滞,一般程序的死锁都是在程序运行时出现的。

本文非原创,参考链接如下.

https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650241563&idx=1&sn=3000d8a03d639c978034df0d651e269d&chksm=88638b74bf14026203d1b04f9df8bf29e40d76e3a65ed7ef3765e5b1d579d86abd4b9b57ef8d&mpshare=1&scene=23&srcid=1016Z1hNrbfVE5quWwWpLMOJ#rd

相关文章

  • Android中关于进程和线程

    1.进程是系统进行资源分配和调度的基本单元,是线程的容器,可以被认为是程序的实体. 2.线程是一种轻量级的进程,一...

  • 学习笔记2-深入理解Android内核设计思想

    第5章 Android进程/线程和程序内存优化 5.1 Android 进程和线程 进程(Process)是程序的...

  • Android源码阅读笔记

    Android系统简介 Android进程和线程

  • Android 多线程之几个基本问题

    Android中的进程和线程 Android中的一个应用程序一般就对应着一个进程,多进程的情况可以参考Androi...

  • Node.js 笔记02

    一、关于命令 常用命令: ​ 二、进程和线程 请参考python学习笔记中的线程和进程 进程:我们写的代码和程序都...

  • Android 进程和线程

    Table of Contents generated with DocToc 【Android 进程和线程】 ...

  • Android进程的简单整理以及多线程编程的意义

    在介绍Android系统的进程和线程之前,我们先简单了解一下,什么是进程?什么是线程?按照操作系统中的描述,线程是...

  • Android通信方式篇总结

    Android系统中各个组件、模块往往运行在各种不同的进程和线程内,这里就必然涉及进程/线程之间的通信。了解其通信...

  • Android进程和IPC

    一,进程和线程线程是最小执行单位,进程可以考虑为一个应用独立运行的环境,进程包含多个线程,比如android程序,...

  • Android中的进程和线程

    当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux...

网友评论

    本文标题:Android中关于进程和线程

    本文链接:https://www.haomeiwen.com/subject/vxadgxtx.html