Java线程生命周期

周期状态:新建,就绪,运行,阻塞,死亡。

a.新建

        当使用new关键字创建一个线程时,JVM为其分配内存并初始化成员变量。此时的状态为新建状态,既不会执行线程体也不会,也不会表现出任何动态。

b.就绪

        对刚创建好的线程来调用start()方法(此方法只能调用一次),线程进入就绪状态。JVM为其创建方法调用栈和程序计数器,此时该线程可以运行了,但何时运行取决于JVM里线程调度器的调度。

下面代码试例:


c.运行

        就绪状态的线程获得了CPU,开始运行run()方法线程执行体,则该线程处于运行状态。

注意:对于一个CPU,任何时刻只会有一个线程在运行,对于多个CPU,线程执行会处于并行(Parallel),不过,当线程数大于CPU个数的时候,还会有线程在同一个CPU上并发执行。

d.阻塞

        当然,线程不可能一直处于运行状态(除非线程体非常短,马上就执行完),运行过程中需要被打断,让另一个线程运行。既对抢占式策略的系统来说,系统会给每一个线层一段的运行时间,当过了这段时间,系统会剥夺这个线程所占的资源,让其它线程获得执行的机会(系统选择下一个线程会考虑线程优先级)。

以下状况,线程会进入阻塞状态:

        1.线程调用sleep方法主动放弃所占的处理器资源。

            (调用sleep方法的线程超过了指定时间重新就如就绪状态)

         2.线程调用了一个阻塞式IO方法,在该方法返回结果之前,该线程被阻塞。

          (线程中调用的阻塞式IO方法已经返回结果重新就如就绪状态)

         3.线程试图获得一个同步监视器,但该监视器正在被其它线程所持有。

          (线程成功的获得了同步监视器重新就如就绪状态)

         4.线程等待某个通知(notify)。

          (线程正在等待某个通知时,其它线程发送了通知重新就如就绪状态)

         5.程序调用了suspend方法将该线程挂起(这个方法容易死锁,应当避免使用)。

            (处于关起状态的线程调用了resume恢复方法重新就如就绪状态)

e.死亡

        线程执行完run()方法线程体、抛出一个未捕获的Exception或error或调用stop()方法结束此线程,线程进入死亡状态。

         1.run()方法执行完,线程正常结束。

         2.线程抛出了以个未 捕获的Exception或error。

         3.直接调用该线程的stop()方法结束线程(调用此方法容易造成死锁,不建议使用)。


一张图大致理解:




-------------------上一节“Java-创建线程基本思路”---------------------

-------------------下一节“Java-线程同步代码块”-----------------------

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • JAVA线程生命周期 摘要 本文详细总结了java线程的五种基本状态,和状态之间的转换关系;介绍了常见了创建线程的...
    yanzhelee阅读 5,712评论 0 9
  • 0 前言 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要...
    七寸知架构阅读 5,195评论 2 63
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    小徐andorid阅读 2,807评论 3 53
  • 线程的生命周期全在一张图中,理解此图是基本: 一、新建和就绪状态 当程序使用new关键字创建了一个线程之后,该线程...
    千淘萬漉阅读 1,732评论 0 11
  • 大家好,我是小小,至于我为什么叫做小小,是因为出生时我非常的瘦小,还不到4斤,我妈怕我活不长,见到我的第一样,就开...
    3e81098bf2ef阅读 202评论 0 2