Java 线程状态

作者: SlowGO | 来源:发表于2019-01-03 18:38 被阅读3次

线程的状态

  1. 新建 New
  2. 可运行 Runnable
  3. 阻塞 Blocked
  4. 等待 Waiting
  5. 等待(时间)Timed Waiting
  6. 结束 Terminated
image

线程的生命周期

1. New

一个新的线程被创建,还没开始运行。

2. Runnable

一个线程准备就绪,随时可以运行的时候就进入了 Runnable 状态。

Runnable 状态可以是实际正在运行的线程,也可以是随时可以运行的线程。

多线程环境下,每个线程都会被分配一个固定长度的CPU计算时间,每个线程运行一会儿就会停止让其他线程运行,这样才能让每个线程公平的运行。这些等待CPU和正在运行的线程就处于 Runnable 状态。

3. Blocked

例如一个线程在等待 I/O 资源,或者它要访问的被保护代码已经被其他线程锁住了,那么它就在阻塞 Blocked 状态,这个线程所需的资源到位后就转入 Runnable 状态。

4. Waiting(无限期等待)

如果一个线程在等待其他线程的唤醒,那么它就处于 Waiting 状态。以下方法会让线程进入等待状态:

  • Object.wait()
  • Thread.join()
  • LockSupport.park()

5. Timed Waiting(有期限等待)

无需等待被其他线程显示唤醒,在一定时间后有系统自动唤醒。

以下方法会让线程进入有限等待状态:

  • Thread.sleep(sleeptime)
  • Object.wait(timeout)
  • Thread.join(timeout)
  • LockSupport.parkNanos(timeout)
  • LockSupport.parkUntil(timeout)

6. Terminated

一个线程正常执行完毕,或者意外失败,那么就结束了。

阻塞状态和等待状态的区别

  • 阻塞状态是等锁
  • 等待状态是等着被唤醒,或者等时间到

相关文章

  • Java 线程的七种状态

    本篇感性地介绍一下 Java 线程的七种状态以及状态之间的转换 Java 线程状态转换图 Java 线程状态 在 ...

  • 线程状态

    java线程与操作系统线程状态略有不同。 1. 操作系统底层线程状态: 课本经典五状态: 2. JAVA线程状态:...

  • Java 线程有哪些状态?

    Java 线程有哪些状态 1.Java线程状态 1.1 线程主要状态 ①初始(NEW):新创建了一个线程对象,但还...

  • 说一下Java线程状态及切换

    一、什么是Java线程状态 在Java程序中,用于描述Java线程的六种状态: 新建(NEW):当前线程,刚刚新建...

  • JAVA 笔记[12.1][多线程之线程状态]

    JAVA线程状态

  • Java线程简介

    本文将介绍Java线程的状态、线程的中断、线程间通信和线程的实现。 线程的状态 Java语言定义了6种不同的线程状...

  • java线程状态

    java的线程状态包括以下几种: NEW 线程创建的初始状态。 RUNABLE 线程正在执行。 注意这里是java...

  • 总结多线程与设计模式+synchronized+性能+高吞吐+死

    Java线程 Java语言的线程 何谓线程 线程启动 线程的暂时停止 线程的共享互斥 线程的协调 线程的状态转移 ...

  • 理解java线程

    java线程的生命周期 Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态,如:...

  • Java知识梳理六

    一、Java多线程一 1.谈谈线程的生命周期和状态转移 关于线程生命周期的不同状态,在Java 5以后,线程...

网友评论

    本文标题:Java 线程状态

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