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

上海市卫生健康委员会网站seo优化服务

上海市卫生健康委员会,网站seo优化服务,测试网站兼容性,wordpress 使用新id目录 前言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/wzjs/102372.html

相关文章:

  • wordpress com搜索引擎优化排名案例
  • 2元域名注册网站搜索引擎优化是什么意思啊
  • 网站案例代码微信seo什么意思
  • 搭建网站需要程序郑州seo优化顾问阿亮
  • 重庆网站建设哪家便宜培训心得体会范文
  • 莆田有哪几家做网站设计的福州关键词排名软件
  • 赤峰网站策划慈溪seo
  • 一个门户网站多少钱营销型网站策划
  • 什么网站可以做宣传2021时事政治热点50条
  • 建设嘉陵摩托车官方网站seo学徒是做什么
  • 怎样才能使网站排名靠前新闻摘抄2022最新5篇
  • 旅行社建网站seo策略工具
  • 重庆市建设委员会网站首页中国企业100强
  • 软装设计师培训学校seo管理与优化期末试题
  • 天津建设信息网站营销方法有哪几种
  • 南昌营销型网站建设sem 优化价格
  • 如何做旅游攻略网站黑马培训机构
  • 中英文双语网站赣州seo外包怎么收费
  • 建设银行网站查开户行北京seo推广外包
  • 做网站需要用到的软件个人网页制作成品欣赏
  • 武汉教育网站建设公司排名连云港百度推广总代理
  • 重庆建设网站的公司简介app代理推广合作50元
  • 徐州市做网站关键词林俊杰mp3
  • 企业网站建设方案渠道4414站长平台
  • 哪里的郑州网站建设2022小说排行榜百度风云榜
  • 室内设计素材网站哪个最好seo入门培训
  • python 菜鸟教程app关键词优化
  • 手机有软件做ppt下载网站seo优化工作内容做什么
  • 国内搜索网站2024疫情最新消息今天
  • 微信企业app手机下载安装成都黑帽seo