多线程之线程状态

1. 线程状态

线程可以有6中状态:

New(新创建)
Runnable(可运行)
Blocked(被阻塞)
Waiting(等待)
Timed Waiting(计时等待)
Terminated(被终止)

线程状态转换
1.1 可运行线程

一旦调用start方法,线程就处于runnable状态。该线程可能正在运行也可能没有运行。

1.2 被阻塞线程和等待线程

当线程处于被阻塞或等待状态时,它暂时不活动。

  • 当一个线程获取一个内部的对象锁(而不是java.util.concurrent库中的锁),而该锁被其他线程持有,则该线程进入阻塞状态。当所有其他线程释放该锁,并且线程调度器允许本线程持有它的时候,该线程将变成非阻塞状态。
  • 当线程等待另一个线程通知调度器一个条件时,它自己进入等待状态。
  • 有几个方法有一个超时参数。通知它们导致线程进入计时等待状态。
1.3 被终止的线程

线程因如下两个原因被终止:

  • 因为run方法正常退出而自然死亡;
  • 因为一个没有捕获的异常终止了run方法而意外死亡。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第三章 Java内存模型 3.1 Java内存模型的基础 通信在共享内存的模型里,通过写-读内存中的公共状态进行隐...
    泽毛阅读 4,389评论 2 22
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 2,999评论 1 18
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,515评论 1 15
  • 今天小编向大家推荐的这10部微电影,个人认为还是不错的。不知道你看过几部,你可以先Mark收藏起来慢慢看。只是我不...
    Kevin苏科阅读 12,180评论 0 2
  • 满篇荒唐言,一把辛酸泪。 图文:茶小科 主题:一个爱喝茶的胖子的孤独 孤独有很多种: “昨夜西风凋碧树,独上高楼,...
    茶小科阅读 477评论 0 2