美文网首页
2.1 线程状态切换

2.1 线程状态切换

作者: lsh的学习笔记 | 来源:发表于2020-04-11 15:15 被阅读0次

Java语言定义了5种线程状态,在任意一个时间点,一个线程只能有且只有其中的一种状态

  • 新建(New):创建后尚未启动的线程处于这种状态。
    运行(Runable):Runable包括了操作系统线程状态中的Running和Ready,也就是处于此状态的线程有可能正在执行,也有可能正在等待着CPU为它分配执行时间。

  • 无限期等待(Waiting):处于这种状态的线程不会被分配CPU执行时间,它们要等待被其他线程显式地唤醒。以下方法会让线程陷入无限期的等待状态:

    • 没有设置Timeout参数的Object.wait()方法。
    • 没有设置Timeout参数的Thread.join()方法。
    • LockSupport.park()方法。
  • 限期等待(TimedWaiting):处于这种状态的线程也不会被分配CPU执行时间,不过无须等待被其他线程显式地唤醒,在一定时间之后它们会由系统自动唤醒。以下方法会让线程进入限期等待状态:

    • Thread.sleep()方法。
    • 设置了Timeout参数的Object.wait()方法。
    • 设置了Timeout参数的Thread.join()方法。
    • LockSupport.parkNanos()方法。
    • LockSupport.parkUntil()方法。
  • 阻塞(Blocked):线程被阻塞了,“阻塞状态”与“等待状态”的区别是:“阻塞状态”在等待着获取到一个排他锁,这个事件将在另外一个线程放弃这个锁的时候发生;而“等待状态”则是在等待一段时间,或者唤醒动作的发生。在程序等待进入同步区域的时候,线程将进入这种状态。

  • 结束(Terminated):已终止线程的线程状态,线程已经结束执行。

相关文章

  • 2.1 线程状态切换

    Java语言定义了5种线程状态,在任意一个时间点,一个线程只能有且只有其中的一种状态。 新建(New):创建后尚未...

  • 线程的基本操作

    线程的基本操作 •线程状态切换 •终止线程(stop) •中断线程(interrupt) •挂起(suspend)...

  • 并发总结(三)关于线程状态

    (一) 线程共有六种状态 (二)与锁相关的线程状态 2.1 当线程在对象的锁池中竞争锁时,状态为 BLOCKED ...

  • 第二章——线程安全性

    2.1 什么是线程安全性 无状态对象一定是线程安全的 上面的 StatelessFactorizer 是无状态的,...

  • Java 线程生命周期

    1. 线程状态 线程状态的转换会导致上下文的切换 1.1 操作系统层面(5种) 初始状态只是创建了线程对象,还未与...

  • 线程的生命周期

    Thread.State 线程状态如何进行切换 等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待...

  • 第二章-线程安全性

    线程安全核心: 共享: 可变: 同步: 如何修复多个线程访问可变状态是发生的错误: 2.1 什么是线程安全性 无状...

  • Rxjava实际应用场景

    Scheduler线程切换——eg:后台线程取数据,主线程展示 CheckBox状态实时更新 输入框改变即网络请求...

  • 多线程状态切换(转载)

    原文地址 http://zy19982004.iteye.com/blog/1626916 一.线程的状态图 二....

  • 多线程基础——拾遗

    主要内容 线程组的使用 切换线程状态的的方法 SimpleDataFormat类与多线程的解决办法 处理线程异常的...

网友评论

      本文标题:2.1 线程状态切换

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