美文网首页Java 杂谈java 虚拟机(JVM)学习笔记学习
Java基础学习备忘录(连载之:线程的生命周期)

Java基础学习备忘录(连载之:线程的生命周期)

作者: TAIKEMAN | 来源:发表于2019-08-01 19:34 被阅读3次

疑难困惑备忘录之:线程的生命周期问题。

  • 线程:操作系统能够进行运算调度的最小单位
  • Java线程的生命周期,即:线程的生老病死
  • 六种状态:
    • New(初始化状态)
      • 在Java层面,线程被创建了;而在操作系统中,线程其实是还没被创建
      • 这个时候是不可能分配CPU执行这个线程的
      • 这个状态是高级语言独有的,操作系统的线程没这个状态
      • 我们New一个线程,这时候它就是这个状态
    • Runnable(可运行/运行状态)
      • 可分配CPU执行
      • 在New状态时,调用start()方法后线程就处于这个状态
    • Blocked(阻塞状态)
      • 不能分配CPU执行的
      • 只有一种情况会导致线程阻塞,就是synchronized
      • 被synchronized修饰的方法或者代码块同一时刻只能有一个线程执行,而其他竞争锁的线程就从Runnable到了Blocked状态
      • 当某个线程竞争到锁了它就变成了Runnable状态。
      • 并发包中的Lock,是会让线程属于等待状态而不是阻塞,只有synchronized是阻塞
    • Waiting(无时间限制的等待状态)
      • 不能分配CPU执行
      • 有三种情况会使得Runnable状态到waiting状态
        1. 调用无参的Object.wait()方法
        2. 调用无参的Thread.join()方法
        3. 调用LockSupport.park()方法
    • Timed_Waiting(有时间限制的等待状态)
      • 和Waiting就是有没有超时时间的差别
      • 不能分配CPU执行的
      • 有五种情况会使得Runnable状态到waiting状态
        1. Object.wait(long timeout)
        2. Thread.join(long millis)
        3. Thread.sleep(long millis)
        4. LockSupport.parkNanos(Object blocked,long deadline)
        5. LockSupport.parkUntil(long deadline)
    • Terminated(终止状态)
      • 线程正常run结束之后或者run一半异常了就是终止状态
线程的生命周期
  • 方法Thread.stop()(已废弃,如:这个线程得到了锁,stop之后这个锁也随着没了,其它线程就都拿不到这个锁;推荐使用interrupt())是让线程终止的

  • interrupt()会使得线程Waiting和Timed_Waiting状态的线程抛出interruptedException异常,使得Runnabled状态的线程如果是在I/O操作会抛出其它异常

  • 若Runnabled状态的线程没有阻塞在I/O状态的话,那只能主动检测自己是不是被中断了,使用isInterrupted()。

本文已收录至我的个人博客,欢迎交流:http://www.swaggyhang.com/

相关文章

  • Java基础学习备忘录(连载之:线程的生命周期)

    疑难困惑备忘录之:线程的生命周期问题。 线程:操作系统能够进行运算调度的最小单位 Java线程的生命周期,即:线程...

  • 多线程知识点整理

    1、多线程基础 线程的生命周期(状态)NEW:就绪状态Java线程刚刚被创建,调用start()方法之后不代表线程...

  • Java知识梳理六

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

  • 万点五实现1

    java基础volidate、线程生命周期、反射、NIO 内存分区GC、类加载 强弱等引用 基本数据结构 线程池 ...

  • java多线程相关

    (一) 基础篇 01.Java多线程系列--“基础篇”01之 基本概念 02.Java多线程系列--“基础篇”02...

  • 知识梳理目录

    Java基础 Java线程池 AQS之独占锁 AQS之Condition AQS之Condition AQS之同步...

  • 并发编程基础(Ⅰ)

    基础 线程的声明周期 Java 线程既然能够创建,那么也势必会被销毁,所以线程是存在生命周期的,可以从线程的生命周...

  • 深入Java线程(二)

    为了理解可先看深入Java线程(一)内容在看本篇。 线程生命周期 关于线程生命周期的不同状态,在 Java 5 以...

  • Java多线程模型

    Java多线程模型 生命周期 Java 线程的生命周期包括创建,就绪,运行,阻塞,死亡 5 个状态。一个 Java...

  • java中线程的生命周期

    java中线程的生命周期 线程是java中绕不过去的一个话题, 今天本文将会详细讲解java中线程的生命周期,希望...

网友评论

    本文标题:Java基础学习备忘录(连载之:线程的生命周期)

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