Java多线程的五种状态

新建状态:new Thread(参数)之后,建立了一个线程对象;

就绪状态:线程对象建立之后,调用start()方法,进入就绪状态,此时并不会直接调用run()方法,线程进入运行状态还需要抢占CPU资源才可以;

运行状态:线程抢到CPU资源后开始执行run()方法,就进入了运行状态;

阻塞状态:当线程遇到一些情况时,会暂时退出CPU资源,让其他线程先执行,此时就进入了线程阻塞状态;

     线程阻塞的情况:1.睡眠,2等待被唤醒,3,当该线程试图得到一个锁,该锁正在被其他线程占用;4.调用I/O阻塞操作

线程结束:run()方法正常退出或者没有捕获的异常终止了run()方法是线程中断。

时间: 2024-12-19 06:43:17

Java多线程的五种状态的相关文章

Java多线程的6种状态

线程可以有以下6种状态: 1. New(新建) 当用new操作符创建一个新线程时,如 new Thread(r), 该线程还没有开始运行.这意味着它的状态是new. 当一个线程处在new状态,程序还没有开始运行线程中的代码.在线程运行之前还有一些基础工作要做. 2. Runnable(可运行) 一旦调用start()方法,线程就处于runnable状态.可以可运行的线程可能正在运行也可能没有运行,这取决于操作系统给线程提供运行的时间(这就是为什么这个状态成为可运行而不是运行) 事实上,运行中的线

java多线程(一)-五种线程创建方式

简单使用示例 Java 提供了三种创建线程的方法: 通过实现 Runnable 接口: 通过继承 Thread 类本身: 通过 Callable 和 Future 创建线程. 还有 定时器 线程池 下面第一个类给出了四种创建方式,第二个类是定时器示例. ① public class ThreadStartTest { public static void main(String[] args) throws ExecutionException, InterruptedException { S

java多线程的几种状态

java线程状态在Thread中定义,源码中能看到有个枚举State,总共定义了六种状态: NEW: 新建状态,线程对象已经创建,但尚未启动 RUNNABLE:就绪状态,可运行状态,调用了线程的start方法,已经在java虚拟机中执行,等待获取操作系统资源如CPU,操作系统调度运行. BLOCKED:堵塞状态.线程等待锁的状态,等待获取锁进入同步块/方法或调用wait后重新进入需要竞争锁 WAITING:等待状态.等待另一个线程以执行特定的操作.调用以下方法进入等待状态. Object.wai

细说进程五种状态的生老病死——双胞胎兄弟Java线程

java线程的五种状态其实要真正高清,只需要明白计算机操作系统中进程的知识,原理都是相同的. 系统根据PCB结构中的状态值控制进程. 单CPU系统中,任一时刻处于执行状态的进程只有一个. 进程的五种状态:初始态,执行态,等待态,就绪态,终止态. 执行状态:一个进程获得了必要资源,并且在CPU上执行时的状态. 执行态进程因为等待某种事件的发生处于等待状态. 执行态进程的时间片用完或在抢占式调度中有更高优先级的进程时变为就绪状态. 阻塞原语:一个执行进程期待某一个事件的发生,但发生条件尚不具备,该进

java线程五种状态

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

Java中的五种单例模式实现方法

[代码] Java中的五种单例模式实现方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package s

【Java多线程】两种基本实现框架

Java多线程学习1——两种基本实现框架 一.前言 当一个Java程序启动的时候,一个线程就立刻启动,改程序通常也被我们称作程序的主线程.其他所有的子线程都是由主线程产生的.主线程是程序开始就执行的,并且程序最终是以主线程的结束而结束的. Java编写程序都运行在在Java虚拟机(JVM)中,在JVM的内部,程序的多任务是通过线程来实现的.每用Java命令启动一个Java应用程序,就会启动一个JVM进程.在同一个JVM进程中,有且只有一个进程,就是它自己.在这个JVM环境中,所有程序代码的运行都

Java 操作 Redis 五种数据类型

项目添加依赖 <!-- Redis 依赖 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> Java 怎么连接 Redis //连接 Redis @Test public void initConn01(){ S

Java 多线程(五) 多线程的同步

Java 多线程(五) 多线程的同步 为什么要引入同步机制 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源.必须对这种潜在资源冲突进行预防. 解决方法:在线程使用一个资源时为其加锁即可. 访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁. 程序实例 用一个取钱的程序例子,来说明为什么需要引入同步. 在使用同步机制前,整体程序如下: public class FetchMoneyTest { public static void main(Stri