多线程系列01-线程的状态

多线程状态图


image.png
  1. 新建状态(new),线程对象被创建后就进入了新建状态
    Thread th = new Thread();
  2. 可执行状态(runnable,就绪状态),其他的线程调用了线程的start()方法,该状态的线程位于可运行线程池中
    th.start();
  3. 运行状态(running),线程获取到了CPU使用权,线程只能由可执行状态进入运行状态
  4. 阻塞状态(blocked),线程因为某种原因放弃了CPU使用权
    1)等待阻塞,运行的线程调用了o.wait()方法,JVM会将该线程放入等待队列(waiting queue)中
    2)同步阻塞,运行的线程在获取对象的同步锁失败时,JVM会将该线程放入锁池(lock pool)中
    3)其他阻塞,运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态
  5. 死亡状态(dead),线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生

Object类:定义了wait(),notify(),notifyAll()等休眠/唤醒函数。
Thread类:定义了一些列的线程操作函数。例如,sleep()休眠函数,interrupt()中断函数,getName()获取函数名称。

你可能感兴趣的:(多线程系列01-线程的状态)