基于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
投稿

猜你喜欢

  • IDEA中打jar包的2种方式(Maven打jar包)

    2023-05-03 22:31:41
  • java selenium 操作弹出窗口示例代码

    2021-06-27 05:29:08
  • C#实现猜数字小游戏

    2023-01-13 16:39:38
  • Android实战教程第七篇之如何在内存中存储用户名和密码

    2021-07-15 15:43:14
  • Android view绘制流程详解

    2023-05-16 07:53:25
  • java中Cookie被禁用后Session追踪问题

    2023-10-17 13:44:32
  • Java爬虫实现Jsoup利用dom方法遍历Document对象

    2023-06-15 07:52:36
  • Java实例讲解动态代理

    2023-03-21 22:56:45
  • Android在线更新SDK的方法(使用国内镜像)

    2022-08-31 02:40:31
  • 用Java实现简单计算器功能

    2023-03-29 17:44:16
  • Java8新特性Stream流实例详解

    2023-05-04 12:55:05
  • c#异常处理示例分享

    2022-09-10 23:20:54
  • java实现饮料自助售货机

    2023-08-15 01:16:37
  • 详解DES&3DES算法的原理以及C#和JS的实现

    2021-06-29 21:58:07
  • SpringBoot如何整合redis实现过期key监听事件

    2023-08-04 18:51:19
  • Flutter Widget开发之Focus组件图文详解

    2023-06-21 03:47:41
  • SpringBoot登录用户权限拦截器

    2022-07-15 04:18:04
  • 关于MVC与SpringMVC的介绍、区别、执行流程

    2023-11-28 02:25:56
  • C#通过委托调用Button单击事件的方法

    2022-11-29 22:09:15
  • 用JAVA实现单链表,检测字符串是否是回文串

    2021-07-20 07:07:45
  • asp之家 软件编程 m.aspxhome.com