首页 > 编程语言 >并发编程[3]_java线程的六种状态

并发编程[3]_java线程的六种状态

时间:2024-08-23 10:37:46浏览次数:7  
标签:状态 java Thread 六种 WAITING 线程 public



java线程状态

1. 操作系统进程的五种状态

网上找了一张图:
image

2. java线程的六种状态

Thread类中getState()方法可以获取线程的状态,返回值是Thread类中的enum类型,取值有NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED六种状态。
java的线程状态将阻塞状态细分为BLOCKED,WAITING,TIMED_WAITING,将就绪和运行统称为RUNNABLE。

  • NEW:线程刚创建,还未启动时的状态
  • RUNNABLE:java中将就绪和运行两种状态中统称为RUNNABLE状态
  • BLOCKED:线程阻塞,等待获取锁
  • WAITING:线程无限制等待
  • TIMED_WAITING:线程有时限的等待
  • TERMINATED:线程执行完毕,终止状态

网上找了一张状态图:

image

例子:

public class Test1 {
    private static final Logger log = LoggerFactory.getLogger(Test1.class);

    public static void main(String[] args) throws InterruptedException {
        // 线程1 测试NEW, 未启动线程
        Thread thread1 = new Thread("thread1") {
            @Override
            public void run() {}
        };

        // 线程2 测试RUNNABLE, 启动线程且一直在运行
        Thread thread2 = new Thread("thread2") {
            @Override
            public void run() {
                while(true){

                }
            }
        };
        thread2.start();

        // 线程3 测试TIMED_WAITING, 休眠10秒,加锁
        Thread thread3 = new Thread("thread3") {
            @Override
            public void run() {
                synchronized (Test1.class){
                    try {
                        sleep(10000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        thread3.start();

        // 线程4 测试WAITING,同步等待thread3
        Thread thread4 = new Thread("thread4") {
            @Override
            public void run() {

标签:状态,java,Thread,六种,WAITING,线程,public
From: https://www.cnblogs.com/Aeons/p/18375500

相关文章

  • Java查看对象头大小
    添加依赖<dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-core</artifactId><version>0.17</version></dependency>查看对象头大小@Testvoidhe......
  • 干货-并发编程提高——线程池(十二)
    提到线程池就不得不说池化技术,那么什么是池化技术呢?池化技术能够减少资源对象的创建次数,提高程序的性能。特别是高并发下这种提高更加明显。使用池化技术缓存的资源有如下特点:对象的创建时间长对象创建需要大量资源对象创建后可被重复使用有没有点儿像共享单车?一个资......
  • 第一个Java程序HelloWorld
    编写第一个程序HelloWorld在任意文件夹中创建java文件例如新建一个文本文件(.txt),然后修改文件名和文件扩展名记得打开显示文件扩展名!!!在Notpad++或记事本中打开刚刚创建的java文件(hello.world)编写publicclasshello{ publicstaticvoidmain(String[]args){ System.ou......
  • Java学习笔记8-数据类型
    Java中主要有八种基本数据类型:byte、short、int、long、float、double、boolean、char。各种数据类型作用:1、byte:8位、有符号的以二进制补码表示的整数。min:-128(-2^7)。max:127(2^7-1)。default:0。对应包装类:Byte。2、short:16位、有符号的以二进制补码表示的整......
  • 浅谈Java MyBatis
    一、MyBatis的基本介绍  MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,由谷歌托管,并且改名为MyBatis。2013年11月迁移到Github。    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。......
  • java+vue计算机毕设美食(风情)展示系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球化和互联网的飞速发展,人们对美食的追求已不再局限于地域限制,而是跨越国界,渴望体验不同文化背景下的风味佳肴。美食不仅是味蕾的享受,更是文化......
  • java+vue计算机毕设快递驿站管理系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着电子商务的蓬勃发展,快递行业迎来了前所未有的增长高峰。每天数以亿计的包裹在各大城市间流转,快递驿站作为连接快递公司与用户的最后一公里服务节......
  • java+vue计算机毕设基于微信小程序英语在线考试系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,智能手机已成为人们日常生活中不可或缺的一部分,尤其在教育领域,移动学习因其便捷性、灵活性和高效性正逐步成为学习的新......
  • 基于Springboot的智能菜谱推荐系统(有报告)。Javaee项目,springboot项目。
    演示视频:基于Springboot的智能菜谱推荐系统(有报告)。Javaee项目,springboot项目。资源下载:基于Springboot的智能菜谱推荐系统(有报告)。Javaee项目,springboot项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringBoot+Mybatis+Vue+Maven来......
  • 基于ssm的社区文化宣传网站(有报告)。Javaee项目,ssm项目。
    演示视频:基于ssm的社区文化宣传网站(有报告)。Javaee项目,ssm项目。资源下载:基于ssm的社区文化宣传网站(有报告)。Javaee项目,ssm项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringMvc+Mybatis+Jsp+Maven来实现。MySQL数据库作为系统......