Java线程的六种状态

  java线程有很多种状态,最主要的有六种,被创建、运行、睡眠、等待、阻塞以及消亡六种,也有很多归结为5种,把睡眠以及等待归结为冻结;

  被创建:就是线程被创建,就是new thread()之后就是创建一个线程;

  运行:线程被创建之后通过 start()方法就可以启动线程,执行线程的run()方法,这时候线程就是在运行的状态,运行状态就是指线程在执行run方法的过程;

  睡眠:线程有sleep(),然后可以自定义时间,线程在运行中只要调用sleep(),线程就会进入睡眠时间,睡眠状态就是线程什么事都不会干,等到睡眠时间到了就会跳到阻塞状态

  等待:线程就是通过wait()方法进入等待状态,进入等待状态就不会醒过来,除非主线程执行结束,或者就是被唤醒,不然就是一直等待下去,唤醒之后就会进入阻塞状态,唤醒               是通过notify()这个方法来实现的。

阻塞:cpu在执行程序的时候,分配到的进程就会执行,没有执行到的cpu就会阻塞起来,等到cpu分配到时间的时候就进入运行状态,然后睡眠以及等待唤醒之后都是进入到阻塞               状态,等待cpu来执行;

  消亡:就是死亡,run()方法执行完也就是进程结束,或者是整个程序被关闭,线程也就随着消亡;

时间: 2024-10-26 19:18:20

Java线程的六种状态的相关文章

[Java并发编程]-线程的六种状态及其状态转换

转载请注明:http://blog.csdn.net/UniKylin/article/details/45050823 1.线程自身信息 线程运行的过程会产生很多信息,这些信息都保存在Thread类中的成员变量里面,常见的有: a.线程的ID是唯一标识getId() b.线程的名称:getName(),如果不设置线程名称默认为"Thread-xx" c.线程的优先级:getPriority,线程优先级从1-10,其中数字越大表示优先级别越高,同时获得JVM调度执行的可能性越大,JDK

java线程五种状态

java线程五种状态: 创建 -> 就绪 -> 运行 -> 销毁 创建 -> 就绪 -> 运行 -> 等待(缺少资源) -> 销毁 下图:各种状态转换

java线程四种状态

一个线程可以有四种状态: 1.新(new), 即线程刚刚创建,而并未执行 2.可运行(runnable),意味着一旦时间分片机制有空闲的CPU周期提供给一个线程,那个线程便可立即开始运行.因此,线程可能在.也可能不在运行当中,但一旦条件许可,没有什么能阻止它的运行——它既没有“死”掉,也未被“堵塞”. 3.Dead,从自己的run()方法中返回后,一个线程便已“死”掉.亦可调用 stop()令其死掉,但会产生一个违例——属于Error的一个子类(也就是说,我们通常不捕获它).记住一个违例的“掷”

JAVA线程间的状态转换

线程间的状态转换:  1. 新建(new):新创建了一个线程对象. 2. 可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法.该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 . 3. 运行(running):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码. 4. 阻塞(block):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,

java线程控制、状态同步、volatile、Thread.interupt以及ConcurrentLinkedQueue

在有些严格的系统中,我们需要做到干净的停止线程并清理相关状态.涉及到这个主题会带出很多的相关点,简单的总结如下: 我们知道,在java中,有一个volatile关键字,其官方说明(https://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html)为: Using volatile variables reduces the risk of memory consistency errors, because any

Java线程及线程池状态

一.Java线程的六种状态 如上图1,JDK定义线程状态是不存在“运行中”状态,但为方便描述过程有些图中会画出运行中的状态. Java线程创建后调用start方法进入就绪状态,被OS调度选中后运行,运行结束或程序退出或抛异常时终止. 运行中线程调用Thread.yield()方法状态切换为可运行就绪状态:运行中线程执行时遇到IO阻塞.调用Thread.sleep或其它线程对象join()方法时进入阻塞等待状态:运行中线程遇到同步锁方法时进入锁池等待状态. 线程从阻塞状态.锁池状态.新建状态.运行

【Java并发基础】Java线程的生命周期

前言 线程是操作系统中的一个概念,支持多线程的语言都是对OS中的线程进行了封装.要学好线程,就要搞清除它的生命周期,也就是生命周期各个节点的状态转换机制.不同的开发语言对操作系统中的线程进行了不同的封装,但是对于线程的声明周期这部分基本是相同的.下面先介绍通用的线程生命周期模型,然后详细介绍Java中的线程生命周期以及Java生命周期中各个状态是如何转换的. 通用的线程生命周期 上图为通用线程状态转换图(五态模型). 初始状态 线程被创建,但是还不允许分配CPU执行.这里的创建仅仅是指在编程语言

基于 JVMTI 实现 Java 线程的监控(转)

随着多核 CPU 的日益普及,越来越多的 Java 应用程序使用多线程并行计算来充分发挥整个系统的性能.多线程的使用也给应用程序开发人员带来了巨大的挑战,不正确地使用多线程可能造成线程死锁或资源竞争,导致系统瘫痪.因此,需要一种运行时线程监控工具来帮助开发人员诊断和跟踪 Java 线程状态的切换.JDK 1.5 及其后续版本提供了监控虚拟机运行状态的接口 JVMTI.本文深入分析了 JVM 中的 Java 线程模型,设计了用于监控线程状态切换的模型,并基于 JVMTI 实现了对 Java 线程切

Java 线程的状态

Java Thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待一般是其他系统资源, 而不是锁, Sleep等 BLOCKED  这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或者可重入的 synchro