iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java线程的状态及常用方法实例分析
  • 217
分享到

Java线程的状态及常用方法实例分析

2023-06-30 02:06:48 217人浏览 独家记忆
摘要

这篇文章主要介绍了Java线程的状态及常用方法实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java线程的状态及常用方法实例分析文章都会有所收获,下面我们一起来看看吧。可以通过 Thread.getSt

这篇文章主要介绍了Java线程的状态及常用方法实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java线程的状态及常用方法实例分析文章都会有所收获,下面我们一起来看看吧。

可以通过 Thread.getState 方法获得线程的状态(线程一共有 6 种状态)

NEW(新建)new:尚未启动

RUNNABLE(可运行状态)runnable:正在 JVM 中运行;或者正在等待操作系统的其他资源(比如处理器)

//有些编程语言会把RUNNABLE分成2种情况
//1.running
//2.ready
//以上2种在Java中都属于RUNNABLE

BLOCKED(阻塞状态) blocked:正在等待监视器(内部锁)

WaiTING(等待状态) waiting:在等待另一个线程

调用以下方法会处于等待状态

没有超时值的 Object.wait

没有超时值的 Thread.join

LockSupport.park

//后续会详细介绍

TIMED_WAITING(定时等待状态) timed_waiting

调用以下方法会处于定时等待状态

Thread.sleep

有超时值的 Object.wait

有超时值的 Thread.join

LockSupport.parkNanos

LockSupport.parkUnti

//后续会详细介绍

TERMINATED(终止状态):已经执行完毕

部分实例:

public class Main {public static void main(String[] a) {Thread dangqian = Thread.currentThread();//获取主线程System.out.println(dangqian.getState());//输出RUNNABLE//表示主线程正处于RUNNABLE状态Thread tj = new Thread();//新建1个线程System.out.println(tj.getState());//输出NEWThread tj1 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("ACM");}});tj1.start();//启动执行完run方法后线程终止 此时处于TERMINATED状态}}

sleep   interrupt 介绍

可以通过 Thread.sleep 方法暂停当前线程,进入WAITING状态

在暂停期间,若调用线程对象的 interrupt 方法中断线程,会抛出 java.lang.InterruptedException 异常

实例(注释)介绍更为明了: 

public class Main {public static void main(String[] a) {Thread tj = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("1");try {Thread.sleep(3000);//sleep是静态方法,所以通过类名来调用;让线程睡3s}catch (InterruptedException e) {e.printStackTrace();}System.out.println("2");}});tj.start();//因为是多线程,在执行tj线程时,主线程依然往下走try {Thread.sleep(1000);//让主线程睡1s} catch (InterruptedException e) {e.printStackTrace();}System.out.println("3");//由于tj线程睡得较久,所以先打印3,再打印2tj.interrupt();//中断此线程,但实际上只是给线程设置一个中断标志,线程仍会执行;在这里用于触发异常}}

输出:

1
3
2

join  isAlive  介绍

A.join 方法:等线程 A 执行完毕后,当前线程再继续执行任务。可以传参指定最长等待时间

A.isAlive 方法:查看线程 A 是否还活着

实例:

public class Main {public static void main(String[] a) {Thread tj = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("1");try {Thread.sleep(3000);//sleep是静态方法,所以通过类名来调用;让线程睡3s}catch (InterruptedException e) {e.printStackTrace();}System.out.println("2");}});tj.start();System.out.println(tj.isAlive());//此时3s未过,tj线程仍在执行;所以输出truetry {tj.join();//等tj线程执行完毕再往下执行//tj.join(1000); 等待tj线程1s再往下执行} catch (InterruptedException e) {e.printStackTrace();}System.out.println("3");    System.out.println(tj.getState());    System.out.println(tj.isAlive());//tj线程已执行完毕;所以输出false}}

输出:

true
1
2
3
TERMINATED
false

关于“Java线程的状态及常用方法实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Java线程的状态及常用方法实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Java线程的状态及常用方法实例分析

本文链接: https://www.lsjlt.com/news/327092.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java线程的状态及常用方法实例分析
    这篇文章主要介绍了Java线程的状态及常用方法实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java线程的状态及常用方法实例分析文章都会有所收获,下面我们一起来看看吧。可以通过 Thread.getSt...
    99+
    2023-06-30
  • java线程池状态有哪些及状态转换实例分析
    这篇文章主要介绍“java线程池状态有哪些及状态转换实例分析”,在日常操作中,相信很多人在java线程池状态有哪些及状态转换实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java线程池状态有哪些及状态...
    99+
    2023-06-30
  • Java 详细讲解线程的状态及部分常用方法
    可以通过 Thread.getState 方法获得线程的状态(线程一共有 6 种状态) NEW(新建)new:尚未启动 RUNNABLE(可运行状态)runnable:正在 JVM ...
    99+
    2022-11-13
  • Java线程安全状态的示例分析
    这篇文章主要为大家展示了“Java线程安全状态的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java线程安全状态的示例分析”这篇文章吧。一、观察线程的所有状态线程的状态是一个枚举类型 ...
    99+
    2023-06-29
  • Java并发编程之线程状态实例分析
    今天小编给大家分享一下Java并发编程之线程状态实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线程状态概述线程由生到...
    99+
    2023-06-30
  • Java线程状态及同步锁的操作方法
    线程的生命历程 线程的五大状态 创建状态:简而言之,当创建线程对象的代码出现的时候,此时线程就进入了创建状态。这时候的线程只是行代码而已。只有调用线程的start()方法时...
    99+
    2022-11-12
  • Java中HashSet原理及常用方法的示例分析
    小编给大家分享一下Java中HashSet原理及常用方法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一. HashSet概述HashSet是Java集...
    99+
    2023-06-02
  • Android编程实现状态保存的方法分析
    本文实例讲述了Android编程实现状态保存的方法。分享给大家供大家参考,具体如下:当我们正在发短信的时候,已经写了几百字了,这时突然来了一个电话,我们接完电话之后,如果发现辛辛苦苦的几百字不见了,那可就火大了,而实际上这些内容都是保存了的...
    99+
    2023-05-30
    android 状态 保存
  • Java线程中关键字和方法的示例分析
    这篇文章主要为大家展示了“Java线程中关键字和方法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java线程中关键字和方法的示例分析”这篇文章吧。一、volatile关键字1,vol...
    99+
    2023-06-29
  • Python字典的常用方法实例分析
    这篇文章主要讲解了“Python字典的常用方法实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python字典的常用方法实例分析”吧!字典添加与修改方法利用 [ ] 处理看到 [] 我...
    99+
    2023-06-29
  • Java链表数据结构及使用方法实例分析
    本篇内容主要讲解“Java链表数据结构及使用方法实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java链表数据结构及使用方法实例分析”吧!认识链表结构单向链表单链表在内存中的表示:可以看...
    99+
    2023-07-02
  • Python字符串的常用方法实例分析
    这篇文章主要介绍“Python字符串的常用方法实例分析”,在日常操作中,相信很多人在Python字符串的常用方法实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python字符串的常用方法实例分析”的疑...
    99+
    2023-06-29
  • Java反射的运用方法实例分析
    今天小编给大家分享一下Java反射的运用方法实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。反射反射定义对象可以通过反...
    99+
    2023-06-29
  • Java数组的使用方法实例分析
    这篇文章主要介绍“Java数组的使用方法实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java数组的使用方法实例分析”文章能帮助大家解决问题。一、前言学习概述:前八天我们学习了语法基础、运算...
    99+
    2023-06-30
  • JVM字符串常量池及String的intern方法实例分析
    本文小编为大家详细介绍“JVM字符串常量池及String的intern方法实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“JVM字符串常量池及String的intern方法实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-06-27
  • Java File类常用方法与文件过滤器实例分析
    本篇内容介绍了“Java File类常用方法与文件过滤器实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!File类File类...
    99+
    2023-06-30
  • Android中常用的XML生成方法实例分析
    本文实例讲述了Android中常用的XML生成方法。分享给大家供大家参考。具体如下: 1. java代码: package com.android.antking.xml; ...
    99+
    2022-06-06
    XML 方法 Android
  • Sql Server事务语法及使用方法的实例分析
    这篇文章将为大家详细讲解有关Sql Server事务语法及使用方法的实例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实例讲述了Sql Server事务...
    99+
    2022-10-19
  • Java线程池的简单使用方法实例教程
    目录线程池使用场景? Java线程池使用总结线程池使用场景? java中经常需要用到多线程来处理一些业务,我们非常不建议单纯使用继承Thread或者实现Runnable接口...
    99+
    2022-11-12
  • 关于JAVA中多线程编程方法的详细解析(附实例)
    一、程序、进程、线程程序是一组指令的有序集合,也可以将其通俗地理解为若干行代码。它本身没有任何运行的含义,它只是一个静态的实体,它可能只是一个单纯的文本文件,也有可能是经过编译之后生成的可执行文件。  从狭义来说,进程是正在运行的程序的实例...
    99+
    2019-09-06
    java教程 多线程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作