源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

基于java 线程的几种状态(详解)

  • 时间:2021-10-03 12:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:基于java 线程的几种状态(详解)
[b]线程可以有六种状态:[/b]   1.New(新创建)   2.Runnable(可运行)(运行)   3.Blocked(被阻塞)   4.Waiting(等待)   5.Timed waiting(计时等待)   6.Terminated(被终止) [b]新创建线程:[/b] [b] [/b] 当用new操作符创建一个新线程时,如new Thread(r),该线程还没有开始运行,它的当前状态为new,在线程运行之前还有一些基础工作要做。 [b]可运行线程:[/b] [b]  [/b]一旦线程调用start方法,线程处于runnable状态。在这个状态下的线程可能正在运行也可能没有运行(也就是说Java规范中正在运行的线程仍然处于可运行状态)。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。 [b]被阻塞线程:[/b] [b]  [/b]这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或者可重入的 synchronized块里别人调用wait() 方法, 也就是线程在等待进入临界区。 [b]等待线程:[/b]   这个状态下是指线程拥有了某个锁之后, 调用了它的wait方法,或者线程调用了join方法 join了另外的线程, 等待被他join的线程执行结束的状态。这里要区分阻塞状态 和等待状态的区别, 一个是在临界点外面等待进入, 一个是在临界点里面wait。 [b]计时等待线程:[/b]   当线程调用带有超时参数的方法时会导致线程进入计时等待状态,带有超市参数的方法有Thread.sleep、Object.wait、Thread.join、Lock.tryLock以及Condition.await的计时版。 [b]被终止的线程:[/b] [b]  [/b]1)线程因为run方法正常退出而自然死亡。   2)因为一个没有捕获的异常终止了run方法而意外死亡。 [b]  线程状态之间的转换:[/b] [b]           [img]http://files.jb51.net/file_images/article/201709/2017091008502416.png[/img] [/b] 以上这篇基于java 线程的几种状态(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部