当前位置: 首页 > news >正文

做网站page庆阳东道设计

做网站page,庆阳东道设计,seo课程培训班费用,营销策划师目录 前言1. NEW2. TERMINATED3. RUNNABLE4. 三种阻塞状态总结 前言 本篇文章来讲解线程的几种状态。在Java中,线程的状态是一个枚举类型,Thread.State。其中一共分为了六个状态。分别为:NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING, TERMI…

目录

  • 前言
  • 1. NEW
  • 2. TERMINATED
  • 3. RUNNABLE
  • 4. 三种阻塞状态
  • 总结

前言

本篇文章来讲解线程的几种状态。在Java中,线程的状态是一个枚举类型,Thread.State。其中一共分为了六个状态。分别为:NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,
TERMINATED

1. NEW

new:安排了⼯作, 还未开始⾏动
new状态表示Thread对象已经创建,但是并没有执行Start()语句

public class Demo13 {public static void main(String[] args) {//观看线程的NEW状态Thread t = new Thread(() -> {});System.out.println(t.getState());t.start();}
}

在这里插入图片描述

2. TERMINATED

terminated:⼯作完成了.
就是表示线程结束的状态

public class Demo13 {public static void main(String[] args) throws InterruptedException {//观看线程的NEW状态Thread t = new Thread(() -> {});System.out.println(t.getState());t.start();t.join();System.out.println(t.getState());}
}

在这里插入图片描述

3. RUNNABLE

runnable:可⼯作的. ⼜可以分成正在⼯作中和即将开始⼯作.
runnable即就绪状态

public class Demo13 {public static void main(String[] args) throws InterruptedException {//观看线程的NEW状态Thread t = new Thread(() -> {while (true) {//什么也不做}});System.out.println(t.getState());t.start();System.out.println(t.getState());t.join();System.out.println(t.getState());}
}

在这里插入图片描述
由于内部是while死循环,main一直在等待t线程,故不会结束。

4. 三种阻塞状态

BLOCKED,WAITING,TIMED_WAITING 都表示排队等着其他事情,也就是都表示阻塞状态。但是还是有区别的,BLOCKED表示由于加锁产生的阻塞,WAITING表示无超时时间的阻塞,TIMED_WAITING表示有超时时间的阻塞。也就是说使用join()进行等待就是WAITING,使用join(time)或者使用sleep()进行等待就是 TIMED_WAITING。
下面观察WAITING和TIMED_WAITING状态。
使用一个监视器线程来观察main的状态

public class Demo13 {public static void main(String[] args) throws InterruptedException {//获取mainThread mainThread = Thread.currentThread();//观看线程的NEW状态Thread t = new Thread(() -> {while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});System.out.println(t.getState());t.start();System.out.println(t.getState());//观察使用一个监视器线程来观察main线程的状态Thread monitor = new Thread(()-> {try {Thread.sleep(1000);System.out.println(mainThread.getState());} catch (InterruptedException e) {e.printStackTrace();}});System.out.println("main等待前的状态:" + mainThread.getState());monitor.start();System.out.println("main线程开始等待");t.join();System.out.println(t.getState());}

在这里插入图片描述
观察TIMED_WAITING状态只需将最下面的join加入参数:

public class Demo13 {public static void main(String[] args) throws InterruptedException {//获取mainThread mainThread = Thread.currentThread();//观看线程的NEW状态Thread t = new Thread(() -> {while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});System.out.println(t.getState());t.start();System.out.println(t.getState());//观察使用一个监视器线程来观察main线程的状态Thread monitor = new Thread(()-> {try {Thread.sleep(1000);System.out.println(mainThread.getState());} catch (InterruptedException e) {e.printStackTrace();}});System.out.println("main等待前的状态:" + mainThread.getState());monitor.start();System.out.println("main线程开始等待");t.join(5000);System.out.println(t.getState());}
}

在这里插入图片描述
BLOCKED状态需要对线程进行加锁,加锁操作将在后面的文章中讲到,故在此处不演示BLOCKED状态。

总结

本文章介绍了java线程中的六个状态,在实际工作中调试中就可能需要打印线程状态,来查找程序中的错误。

http://www.dtcms.com/a/487199.html

相关文章:

  • 从1G到5G:移动通信技术的迭代史诗与未来展望
  • 深入理解 Java 类加载与垃圾回收机制:从原理到实践
  • 手机wap网站模板 带后台台州椒江做网站
  • 苏州网站推广公司东营住建局官网
  • 配置的前世今生:从逻辑中抽离,又与逻辑有限融合
  • 十三、kubernetes 1.29 之 存储 storageClass存储类、补全命令
  • Kotlin中的flow、stateflow、shareflow之间的区别和各自的功能
  • 一般网站建设的流程图wordpress账号和站内网
  • 复习总结最终版:Linux软件编程
  • 索泰显卡,索泰 firestorm 官方下载
  • 网站建设的主要内容包括网页框架结构有哪些
  • 公司做一个网站企业网站制作哪些公司制作
  • 青岛做外贸网站建设wordpress订阅关闭
  • 【个人成长笔记】在Ubuntu中的Linux系统安装实验室WIFI驱动安装(Driver for Linux RTL8188GU)
  • 腾讯音视频功能有哪些
  • 网站建设的流程与思路完美代码网站
  • 基于 GitLab CI/CD 与 Google Gemini 的 AI Code Review 自动化方案
  • 【Vue专题】前端JS基础Part1(含模版字符串、解构赋值、变量常量与对象)
  • 婚庆网站开发背景wordpress怎么改后台
  • 0.2、​​AI Agent 开发中 ReAct 和 MAS 的概念
  • 网站源码风险哈尔滨 门户网站
  • 那些企业网站做的漂亮怎么做免费公司网站
  • 【Go】--扩容机制
  • 网站上哪个做相片书好哈尔滨信息网租房信息
  • 电子商城官方网站做网站的需要什么资质证明
  • 外贸网站制作需求wordpress设置多语言
  • 怎么提Issue与PR
  • wordpress建站资源漂亮的网站设计
  • Flowise 任意文件读写漏洞 | CVE-2025-61913
  • 青岛网站建设平台纯静态网站