【Java中的Thread线程的简单方法介绍和使用详细分析】

文章目录

  • 前言
  • 一、run() 和 start() 方法
  • 二、sleep() 方法
  • 三、join() 方法
  • 总结


前言

提示:若对Thread没有基本的了解,可以先阅读以下文章,同时部分的方法已经在如下两篇文章中介绍过了,本文不再重复介绍!!

  • 【Java中Tread和Runnable创建新的线程的使用方法】

  • 【Java中的Thread线程的七种属性的使用和分析】


提示:以下是本篇文章正文内容,下面案例可供参考

一、run() 和 start() 方法

在这里插入图片描述

在这里插入图片描述

代码示例 1

public class Ceshi {public static void main(String[] args) {Thread t = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("hello world");}});t.run();System.out.println(t.isAlive());System.out.println(t.getState());}
}

输出结果

在这里插入图片描述

代码示例 2

public class Ceshi {public static void main(String[] args) {Thread t = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("hello world");}});t.start();System.out.println(t.isAlive());System.out.println(t.getState());}
}

输出结果

在这里插入图片描述

由此看出:

  1. t.run()这条语句能够调用run()方法,但是没有启动线程,线程仍然处于NEW的状态,并没有启动线程,只是调用了一次run()方法。
  2. t.start()这条语句同样能够调用run()方法,但是它真正的启动t线程,线程处于RUNNABLE的状态,然后t线程调用了run()方法

二、sleep() 方法

在这里插入图片描述

代码示例

public class Ceshi {public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(() -> {System.out.println("工作中");});t1.start();//该方法为静态方法,直接使用类名调用Thread.sleep(3000);//main线程休眠3秒后,才能继续执行下面的语句System.out.println();System.out.println("耗时三秒,工作完成");}
}

输出结果

在这里插入图片描述

结论

  1. 该方法写在那个线程里,就会使哪个线程休眠规定的时间,其他的线程不受影响。
  2. public static void sleep(long millis, int nanos)休眠millis毫秒后,再休眠nanos纳秒(范围:0-999999纳秒)
  3. 因为线程的调度是不可控的,所以这个方法只能保证实际休眠时间是大于等于参数设置的休眠时间的。

三、join() 方法

在这里插入图片描述

代码示例

public class Ceshi {public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(() -> {System.out.println("工作一需要3秒");try {Thread.sleep(4000);} catch (InterruptedException e) {throw new RuntimeException(e);}});Thread t2 = new Thread(() -> {System.out.println("工作一已完成,开始工作二");try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}});Thread t3 = new Thread(() -> {System.out.println("工作二已完成,开始工作三");try {Thread.sleep(2000);} catch (InterruptedException e) {throw new RuntimeException(e);}});Thread t4 = new Thread(() -> {System.out.println("工作三已完成,开始工作四");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}});//在main线程中调用t.join(),就是让main线程等待t线程执行结束(保证t先结束)t1.start();t1.join();//t1的任务不结束,不会执行下面的语句t2.start();t2.join();//t2不结束,不继续进行t3.start();t3.join();//同理t4.start();t4.join();//同理}
}

输出结果

在这里插入图片描述

结论

  1. 有时,我们需要等待一个线程完成它的工作后,才能进行自己的下一步工作。该方法能够保证线程的任务有序执行,不会发生抢占式的进行。
  2. 同时还有带参数的重载方法,public void join(long millis) 等待线程结束,最多等millis毫秒,public void join(long millis, int nanos),在millis毫秒的基础上再加上nanos纳秒(范围:0-999999纳秒)

总结

除了以上常用的方法,还有许多的方法在前言中的文章已经详细介绍和使用,如若该文中没有找到你需要的,请跳转到前言的链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在nginx上部署nuxt项目

先安装Node.js 我安的18.17.0。 安装完成后,可以使用cmd,winr然cmd进入,测试是否安装成功。安装在哪个盘都可以测试。 测试 输入node -v 和 npm -v,(中间有空格)出现下图版本提示就是完成了NodeJS的安装…

Windows OS CMD 常用工具 の 命令合集

# First Of All 每次想要修改环境变量都要按部就班点开系统属性、高级系统设置、环境变量。这种操作实在是太繁琐了,对于我一个懒人来讲实在是 忍无可忍 。如果可以使用 WINR 或 CMD 直接打开系统内的一些工具,是不是就可以节省很多时间;是不…

【node.js】01-fs读写文件内容

目录 一、fs.readFile() 读取文件内容 二、fs.writeFile() 向指定的文件中写入内容 案例:整理txt 需求: 代码: 一、fs.readFile() 读取文件内容 代码: //导入fs模块,从来操作文件 const fs require(fs)// 2.调…

【雕爷学编程】Arduino动手做(173)---SG90舵机双轴云台模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

windows配置anaconda环境变量

windows 配置 anaconda 环境变量,可以做到 cmd 中调用 conda 命令,不必每次都去找 Anaconda Prompt 文章目录 1. 找到Anaconda的安装位置2. 配置系统环境变量2.1 一步到位2.1 或者手动打开2.2 配置环境变量 3. 检查 1. 找到Anaconda的安装位置 默认安…

kafka面试题

kafka基本概念 Producer 生产者:负责将消息发送到 BrokerConsumer 消费者:从 Broker 接收消息Consumer Group 消费者组:由多个 Consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费&am…

Vue中TodoList案例_动画

MyItem.vue : 主要是引入了import animate.css样式库,animate.css样式库配置见上一篇文章animate.css样式库,然后再li标签外套了transition标签,引用了name里面的名称是animate.css拿过来的,绑定了enter-active-class和leave-act…

电脑硬盘指的是什么?电脑硬盘长什么样子呢

在很早之前就听说过电脑里面有硬盘,但是不知道电脑硬盘是什么样子,本章文章结合硬盘的接口类型,以及应用技术,说说与硬盘样式有关的知识 一。机械硬盘 如果从硬盘的应用技术来区分硬盘,一般分为两种,早些年…

2023年第三届能源、电力与电气工程国际会议 (CoEEPE 2023)

会议简介 Brief Introduction 2023年第三届能源、电力与电气工程国际会议(CoEEPE 2023) 会议时间:2023年11月22日-24日 召开地点:澳大利亚墨尔本 大会官网:www.coeepe.org 2023年第三届能源、电力与电气工程国际会议(CoEEPE 2023)由安徽大学、…

【大数据运维-ambari】自定义fair-scheduler.xml配置文件导致ambari-server启动失败

将自定义fair-scheduler.xml放到 /var/lib/ambari-server/resources/stacks/HDP/3.0/services/YARN/configuration目录下,重启ambari-server失败: 日志显示: 进ambari数据库查看发现数据应该是对的。 删掉之前自定义的文件fair-scheduler.x…

JavaScript function默认参数赋值前后顺序差异

1、(num1,num2num1) 当传值仅传一个参数时,先给到第一个参数即num1,num1再赋值给num2, function sum(num1, num2 num1) {console.log(num1 num2) } sum(10)//20 sum(10,3)//13 2、(t2t1,t1) 当传值仅有一个参数时,先给到第一个…

Qt 第一讲

登录框设置 #include "zuoye.h" #include "ui_zuoye.h"Zuoye::Zuoye(QWidget *parent): QWidget(parent), ui(new Ui::Zuoye) {ui->setupUi(this);//界面this->resize(540,420); //设置尺寸this->setFixedSize(540,420);//固定尺寸this->setS…

FPGA设计时序分析二、建立/恢复时间

目录 一、背景知识 1.1 理想时序模型 1.2 实际时序模型 1.2.1 时钟不确定性 1.2.2 触发器特性 二、时序分析 2.1 时序模型图 ​2.2 时序定性分析 一、背景知识 之前的章节提到,时钟对于FPGA的重要性不亚于心脏对于人的重要性,所有的逻辑运算都离开…

Unity光照相关知识和实践 (烘焙光照,环境光设置,全局光照)

简介 本文将会通过一个简单的场景搭建,介绍如何使用烘焙光照以及相关的注意事项。另外还介绍了Unity内全局光照(GI)的知识和GI实际在游戏内的表现效果。 Unity关于光照相关的参考文档地址:https://docs.unity.cn/cn/current/Man…

JAVA基础-集合(List与Map)

目录 引言 一,Collection集合 1.1,List接口 1.1.1,ArrayList 1.1.1.1,ArrayList的add()添加方法 1.1.1.2,ArrayList的remove()删除方法 1.1.1.3,ArrayList的contai…

web前端tips:js继承——借用构造函数继承

上篇文章给大家分享了 js继承中的原型链继承 web前端tips:js继承——原型链继承 在文章末尾,我提到了 原型链的继承,子类需要传递参数给父类的构造函数,就无法通过直接调用父类的构造函数来实现,需要通过中间的过程来…

Protobuf数据交互实战

"no one gonna make me down" 在之前呢,我们介绍了什么protobuf以及它的语法、数据类型。 一句老话说得好,"多说不练,假把式!"。因此,本篇会选择以protobuf的语法,完成一个简易的通讯…

Godot 4 源码分析 - 获取脚本

获取属性列表 今天搂草打兔&#xff0c;取得了脚本内容 因为已能取得属性值&#xff0c;那就再进一步&#xff0c;取得属性名列表 if (SameText(drGet.propertyName, "propertyNames", DRGRAPH_FLAG_CASESENSITIVE)) {List<PropertyInfo> *p_list new List…

工信部、国家标准委联合印发《国家车联网产业指南(2023 版)》

国家工信部和标委发布了最新的《国家车联网产业标准体系建设指南&#xff08;智能网联汽车&#xff09;&#xff08;2023 版&#xff09;》&#xff0c;了解这篇文章&#xff0c;不论您是智能网联汽车的追随者&#xff0c;还是对智能网联汽车产业前景感兴趣的人&#xff0c;都非…

性能测试请求重试实现思路

文章目录 一、背景二、尝试的解决方案三、解决方案1&#xff1a;jmeter retrier插件&#xff01;有点用但是不是特别有用-_-||四&#xff0c;最终解决方案&#xff1a;lucust! 一、背景 最近系统需要压测一些活动&#xff0c;场景是新建抽奖活动之后&#xff0c;每隔2s查询1次…