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

作者:jingxian 时间:2022-08-31 19:51:47 

线程可以有六种状态:

1.New(新创建)

2.Runnable(可运行)(运行)

3.Blocked(被阻塞)

4.Waiting(等待)

5.Timed waiting(计时等待)

6.Terminated(被终止)

新创建线程:

当用new操作符创建一个新线程时,如new Thread(r),该线程还没有开始运行,它的当前状态为new,在线程运行之前还有一些基础工作要做。

可运行线程:

一旦线程调用start方法,线程处于runnable状态。在这个状态下的线程可能正在运行也可能没有运行(也就是说Java规范中正在运行的线程仍然处于可运行状态)。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。

被阻塞线程:

这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或者可重入的 synchronized块里别人调用wait() 方法, 也就是线程在等待进入临界区。

等待线程:

这个状态下是指线程拥有了某个锁之后, 调用了它的wait方法,或者线程调用了join方法 join了另外的线程, 等待被他join的线程执行结束的状态。这里要区分阻塞状态 和等待状态的区别, 一个是在临界点外面等待进入, 一个是在临界点里面wait。

计时等待线程:

当线程调用带有超时参数的方法时会导致线程进入计时等待状态,带有超市参数的方法有Thread.sleep、Object.wait、Thread.join、Lock.tryLock以及Condition.await的计时版。

被终止的线程:

1)线程因为run方法正常退出而自然死亡。

2)因为一个没有捕获的异常终止了run方法而意外死亡。

线程状态之间的转换:

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

来源:http://www.cnblogs.com/alternative/archive/2017/09/10/7499939.html

标签:java,线程,状态
0
投稿

猜你喜欢

  • springboot访问template下的html页面的实现配置

    2023-02-09 23:33:21
  • MyBatis超详细讲解如何实现分页功能

    2023-08-22 23:06:51
  • IDEA教程之Activiti插件图文详解

    2023-11-14 23:06:45
  • Struts2 Result 参数详解

    2022-04-28 07:54:35
  • Java日期与时间类原理解析

    2021-07-20 14:00:36
  • Java集合的Collection接口和List接口详解

    2021-11-02 05:24:44
  • java如何通过IP解析地理位置

    2021-09-11 08:01:07
  • Java-String类最全汇总(下篇)

    2023-11-09 14:45:26
  • Java如何实现登录token令牌

    2022-05-19 16:58:11
  • 解决eclipse上传svn忽略target文件夹的坑

    2023-09-12 04:04:23
  • Java实现新建有返回值的线程的示例详解

    2022-02-13 17:09:33
  • android TextView实现跑马灯效果

    2023-07-27 16:35:31
  • Java 数据结构之堆的概念与应用

    2023-11-24 05:36:18
  • Flutter加载图片的多样玩法汇总

    2023-08-24 09:48:22
  • Android开发之android_gps定位服务简单实现

    2023-07-31 20:02:25
  • windows定时器配置执行java jar文件的方法详解

    2023-04-17 16:40:21
  • java字符串相似度算法

    2023-11-26 12:33:25
  • 你都理解创建线程池的参数吗?

    2022-06-10 06:36:05
  • java 工厂模式的实例详解

    2023-11-28 08:48:57
  • Maven打包jar包没有主属性问题解决方案

    2023-11-25 06:56:32
  • asp之家 软件编程 m.aspxhome.com