首页 > 编程语言 >【Java基础】Java线程的六种状态详解

【Java基础】Java线程的六种状态详解

时间:2024-02-04 22:01:50浏览次数:31  
标签:状态 RUNNABLE Java Thread WAITING 详解 线程

NEW状态 当创建一个Thread对象但尚未调用其start()方法时,线程处于NEW状态。在这个状态下,线程并未启动,仅完成了初始化阶段。


RUNNABLE状态

RUNNABLE是Java中较为特殊的一个状态,它涵盖了传统操作系统中的就绪和运行两种状态。当线程已启动且CPU调度器为其分配了时间片或线程正在等待系统资源(如I/O操作)时,线程都处于RUNNABLE状态。在Java虚拟机(JVM)中,这样的线程既可能实际在执行,也可能随时准备执行。


BLOCKED状态 BLOCKED状态表示线程因尝试获取锁而被阻塞,暂时无法继续执行。


WAITING状态

当线程调用Object.wait()、Thread.join()或者LockSupport.park()等方法后,主动放弃当前持有的锁并进入WAITING状态,此时线程必须由其他线程通过notify()、notifyAll()或LockSupport.unpark()方法唤醒才能恢复到RUNNABLE状态。


TIMED_WAITING状态

TIMED_WAITING状态与WAITING状态相似,区别在于线程会在指定的时间间隔后自动唤醒,无需其他线程显式地唤醒它。常见的情况包括使用Thread.sleep(long millis)、Object.wait(long timeout)、Thread.join(long millis)或LockSupport类的相关超时方法。


TERMINATED状态 当线程正常结束执行,或者因为异常导致线程终止时,线程就会转为TERMINATED状态。

标签:状态,RUNNABLE,Java,Thread,WAITING,详解,线程
From: https://blog.51cto.com/u_15404648/9594577

相关文章

  • 【adb基础】adb详解及使用
    dumpsysdumpsys是Android系统的调试工具,提供有关系统服务的信息pm(PackageManager)主要用于获取和安装在Android设备上的应用信息。ADB运行架构adbclient--->adbshellechoxxxadbserver--->adb-ltcp:5037fork-serverserver--reply-fd4(可使用命令查看此服务ps......
  • Java 运算符详解与字符串处理技巧
    Java运算符算术运算符算术运算符用于执行常见的数学运算。运算符名称描述示例+加法将两个值相加x+y-减法从一个值中减去另一个值x-y*乘法将两个值相乘x*y/除法将一个值除以另一个值x/y%取模返回除法余数x%y++自增将变量......
  • Java并发(二十三)----同步模式之保护性暂停
    1、定义即GuardedSuspension,用在一个线程等待另一个线程的执行结果要点有一个结果需要从一个线程传递到另一个线程,让他们关联同一个GuardedObject如果有结果不断从一个线程到另一个线程那么可以使用消息队列JDK中,join的实现、Future的实现,采用的就是此模式因......
  • java Atomic原子类&&常见并发容器
    Atomic原子类Atomic原子类介绍Atomic翻译成中文是原子的意思。在这里Atomic是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子/原子操作特征的类。并发包 java.util.concurrent 的原......
  • 非空处理 Java非空判断 非空处理及mysql数据库字段的not null
    1.mysql##去掉非空,如果非空又没有默认值,这样程序在添加数据的时候i,如果没有设置值就会报错。该操作很危险。##ALTERTABLE`order_test`ADDCOLUMN`test_card_name`NOTNULLVARCHAR(200)COMMENT'卡名称';##修改允许为空..ALTERTABLE`order_test`MODIFYCOLUMN`test......
  • 命令行,使用java的java 命令,直接调用执行class文件
    https://blog.csdn.net/sxzlc/article/details/104910162/目录0.最基本使用,参照下面链接(以前整理的资料)1.直接调用java文件■cmd2.调用jar包(MainClass打包到jar包时)方法一:java-jar xxx.jar方法二:java-cp ./xxx.jar  xxx.xxx.xx.MainClass3.补充说明4.运行时,设......
  • yarn安装太慢,如何多线程安装依赖
    Yarn本身设计时就考虑到了并行安装依赖以提高速度,它默认使用多线程来下载和安装包。当执行yarninstall时,Yarn会利用所有可用的CPU核心,并通过其内部的并行化机制来加速安装过程。如果你发现Yarn在安装依赖时仍然显得较慢,可以尝试以下方法来优化:启用网络代理:如果你的网......
  • threadlocal 线程本地变量,线程独享
         ......
  • Java SPI 代码示例
    JavaServiceProviderInterface是JDK自带的服务提供者接口又叫服务发现机制更是一种面向接口的设计思想。即JDK本身提供接口类,第三方实现其接口,并作为jar包或其他方式注入到其中,在运行时会被JDKServiceLoader发现并加载,自动调用实现类的方法。1.在本地测试SPI机制本人......
  • mysql数据库--行级锁,间隙锁和临键锁详解
    转载链接地址:MySQL数据库——锁-行级锁(行锁、间隙锁和临键锁)介绍行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中。InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。对于行级......