线程的生命周期【java多线程】

  • 内容
  • 相关

1、基本概念

    程序 是为完成特定任务、用某种语言编写的一组指令的集合。是指一段静态的代码。

    进程 是程序的一次执行过程,是系统进行调度和资源分配的一个独立单位。 

    线程 是比进程更小一级的执行单元。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。线程不能独立存在,必须存在于进程中,各线程间共享进程空间的数据

2、线程的调度

    java 中线程的调度方法

    1同优先级线程组成先进先出队列,使用时间片策略。

    )有优先级高低之分的线程之间,采用优先调度的抢占式策略。

    java 语言内置对多线程的支持,这使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。每个 java 程序都有一个隐含的主线程 main 方法,这是一个前台线程

3、线程的生命周期

    java 语言只有 Thread 类及其子类的对象才能表示线程,线程的一个完整的生命周期中通常要经历五种状态:

1)新建状态(New

    在一个 Thread 类或其子类的对象被声明并创建后,调用 start() 方法之前,该线程处于新建状态。此时的线程并没有获得应有的资源,是一个空线程。线程只有通过启动后,系统才会为他分配资源。

Thread t = new MyThread();    //MyThread Thread 的子类

2)就绪状态(Runnable

    处于新建状态的线程对象调用 Thread 提供的 start() 方法后,该线程就进入了就绪状态,在线程队列等待 CPU 时间片,此时它已具备了运行的条件,但能否获得 CPU 使用权进入运行状态,还需要等待系统的调度。就绪状态也叫可运行状态

t.start();

3)运行状态(running

    当就绪的线程被调度获得 CPU 使用权时,便进入运行状态,开始自动执行 run()方法定义了线程的操作和功能)的线程执行体。一个线程不可能一直处于运行状态,当系统分配的时间片执行完之后,系统就会剥夺该线程占用的 CPU 资源,让其他线程获得执行的机会。或者调用 yield() 方法,这个方法是:当前运行线程让出 CPU 的使用权,使其他线程有机会获得调度,但这个方法很少能正确的使用,所以不建议使用。

4)阻塞状态(block

    一个正在执行的线程在某种特殊情况下,如被人为挂起执行 I/O 操作时,让出 CPU 并临时中止自己的执行,进入阻塞状态,只有当引起阻塞的原因被消除,如 I/O 完成,sleep 时间到,线程才会重新进入等待队列中。

5)死亡状态

    也叫消亡状态。当一个线程完成了它的全部工作(run() 方法正常执行完毕)或线程被提前强制性地终止线程抛出一个未捕获的异常或错误,就进入了消亡状态。这时的线程将不再拥有运行的资格,变成了一个垃圾,等待垃圾回收机制回收释放空间。线程的整个生命周期也就结束了。

TIM截图20180402110134.png

本文标签:

版权声明:若无特殊注明,本文皆为《尤尤》原创,转载请保留文章出处。

本文链接:线程的生命周期【java多线程】 - https://www.yxfseo.cn/post-205.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注