• 技术文章 >Java >java教程

    Java线程中几种状态分享

    黄舟黄舟2017-09-11 10:40:40原创474
    下面小编就为大家带来一篇基于java 线程的几种状态(详解)。小编觉得挺不错的,现在就想给大家,也给大家做个参考。一起跟随小编过来看看吧

    线程可以有六种状态:

      1.New(新创建)

      2.Runnable(可运行)(运行)

      3.Blocked(被阻塞)

      4.Waiting(等待)

      5.Timed waiting(计时等待)

      6.Terminated(被终止)

    新创建线程:

      当用new操作符创建一个新线程时,如new Thread(r),该线程还没有开始运行,它的当前状态为new,在线程运行之前还有一些基础工作要做。

    可运行线程:

      一旦线程调用start方法,线程处于runnable状态。在这个状态下的线程可能正在运行也可能没有运行(也就是说Java规范中正在运行的线程仍然处于可运行状态)。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。

    被阻塞线程:

      这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或者可重入的 synchronized块里别人调用wait() 方法, 也就是线程在等待进入临界区。

    等待线程:

      这个状态下是指线程拥有了某个锁之后, 调用了它的wait方法,或者线程调用了join方法 join了另外的线程, 等待被他join的线程执行结束的状态。这里要区分阻塞状态 和等待状态的区别, 一个是在临界点外面等待进入, 一个是在临界点里面wait。

    计时等待线程:

      当线程调用带有超时参数的方法时会导致线程进入计时等待状态,带有超市参数的方法有Thread.sleep、Object.wait、Thread.join、Lock.tryLock以及Condition.await的计时版。

    被终止的线程:

      1)线程因为run方法正常退出而自然死亡。

      2)因为一个没有捕获的异常终止了run方法而意外死亡。

      线程状态之间的转换:

               

    以上就是Java线程中几种状态分享的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Java 分享 状态
    上一篇:Java中关于poi导入Excel通用工具类的案例 下一篇:Java基础知识精选的分析

    相关文章推荐

    • 动态代理的两种方式是什么• JAVA-5NIO之Selector• J2ME程序开发全方位基础讲解汇总(一)• 快速入门Java中的Lambda表达式• java提高篇(六)-----关键字static

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网