线程基础:Java多线程的创建休眠与等待

news2024/11/26 16:35:32

目录

一.Thread 类是什么?

二.Thread 类的几个常见属性

三.线程创建

1. 继承Thread,重写 run 方法

2. 实现Runnable,重写 run 方法

3. 继承Thread,使用匿名内部类

4. 实现Runnable,使用匿名内部类

5. 使用 lambda 表达式(最常用)

四.Thread的休眠与等待

1.概念

2.等待的三种方法

3.休眠的两种方法

Demo案例


一.Thread 类是什么?

Thread 类是JVM管理线程的一个类,每个线程都有唯一一个 Thread 对象与之关联。

二.Thread 类的几个常见属性

属性获取方法
IDgetId()
名称getName()
状态getState()
优先级getState()
是否后台线程getPriority()
是否存活isAlive()
是否被中断inInterrupted()

三.线程创建

1. 继承Thread,重写 run 方法

 //1.继承Thread来创建一个线程类
 class MyThread extends Thread{
     @Override
     public void run(){
         System.out.println("线程");
     }
 }
 ​
 //2.创建 MyThread 的实例
 MyThread myThread = new MyThread();
 ​
 //3.调用 start 方法启动线程
 myThread.start();

2. 实现Runnable,重写 run 方法

 //1.实现 Runnable 接口
 class MyRunnable implements Runnable{
     @Override
     public void run() {
         System.out.println("线程");
     }
 }
 ​
 //2.创建 Thread 类实例,调用 Thread 的构造方法, 将Runnable 对象作为 target 参数
 Thread t = new Thread (new MyRunnable() );
 ​
 //3.调用 start 方法
 t.start();

3. 继承Thread,使用匿名内部类

 //1.使用匿名内部类创建
 Thread thread = new Thread(){
     @Override
     public void run() {
         System.out.println("线程");
     }
 };
 ​
 //2.调用 start 方法
 thread.start();

4. 实现Runnable,使用匿名内部类

 //1.使用匿名内部类 Runnable接口  创建
 Thread t = new Thread(new Runnable() {
     @Override
     public void run() {
         System.out.println("线程");
     }
 });
 //2.start
 t.start();

5. 使用 lambda 表达式(最常用)

 //1.lambda表达式
 Thread thread = new Thread(()->{
     System.out.println("线程");
 });
 ​
 //2.调用start方法
 thread.start();


四.Thread的休眠与等待

1.概念

jionsleep都是Thread类的方法,wait()是object类的方法

  • sleep 睡觉:表示线程等待,是为了暂停线程的执行一段时间,时间到了之后会自动唤醒。

  • join 插队:一个线程运行中调用另外线程的join方法,则当前线程停止执行,等到新join进来的线程执行完毕,才会继续执行!!

  • wait 等待:表示线程等待,为了暂停线程的执行,直到某个条件满足,通常使用notify()唤醒。

2.等待的三种方法

public void join ()等待线程结束
public void join (long millis)等待线程结束,最多等待millis毫秒
public void join (long millis , int nanos)同理,但可以更高精度

3.休眠的两种方法

有一点我们要知道,线程的调度是不可控的,所以实际休眠时间是大于参数设置的休眠时间的

public static void sleep(long millis)throws InterruptedException休眠当前线程millis毫秒
public static void sleep(long millis,int nanos)throws InterruptedException同理,更高的精度

Demo案例

 public class Demo {
     public static void main(String[] args) throws InterruptedException {
         Thread thread1 = new Thread(()->{
             System.out.println(1);
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         });
         Thread thread2 = new Thread(()->{
             System.out.println(2);
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         });
         
         thread1.start();
         thread2.start();
         thread1.join();
         thread2.join();
 ​
         System.out.println("OK");
     }
 }

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

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

相关文章

大数据-玩转数据-Flink窗口

一、Flink 窗口 理解 在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击…

医疗器械行业的MES系统解决方案

医疗器械行业的MES系统(制造执行系统)解决方案是为医疗器械制造企业提供的一种集成化的信息技术系统,用于管理和监控制造过程,提高生产效率,确保产品质量,以及优化整个生产流程。MES系统通常涵盖了生产计划…

No118.精选前端面试题,享受每天的挑战和学习

文章目录 为什么说HTTP是无状态的协议?HTTP 报文结构是怎样的?HTTP1.1 中如何解决 HTTP 的队头阻塞问题?HTTP 中如何处理表单数据的提交?说下application/x-www-form-urlencoded 和 multipart/form-data对于定长和不定长的数据&am…

影视公司技术流程设计之Pipeline数据管理

使用场景 1 设计师画好设计稿后怎样让导演审查? 叫到位子上看? 放个文件夹会议室统一看?意见怎么记录,怎么反馈? 2 材质,绑定文件怎么与模型同步, 很多时间是绑定不小心改了, 去了灯…

WinRAR<6.23 远程代码执行漏洞【Poc公开】(CVE-2023-38831) [有POC]

漏洞类型代码注入发现时间2023-08-25漏洞等级高危MPS编号MPS-bw2s-d0rvCVE编号CVE-2023-38831漏洞影响广度广 漏洞危害 OSCS 描述WinRAR 是一款适用于 Windows 系统的压缩包管理器。 WinRAR 6.2.3之前版本打开压缩文件时会调用 ShellExecute 函数匹配文件名,如果目…

软件设计师(十一)标准化和软件知识产权基本知识

一、标准化基础知识 标准(Standard)是对重复性事物和概念所做的统一规定 标准化工作的特征包括横向综合性、政策性和统一性 1、基本概念 (1)标准的分类 国际标准:ISO、IEC等国际标准化组织国家标准:GB一中国、ANSI一美国、BS一…

AIGC领航,智能AI赋能乡村教育,梦想扬帆远航

一位扎根深山支教十年的湖北教师袁辉的故事曾经感受无数人,新华社、人民日报都撰文为他点赞。在他带过的学生中,有一位名叫青青的女学生患有成骨不全症,俗称“瓷娃娃”,学校离家十几公里山路,上学对她来说,…

Java注解与反射

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Java注解与反射 Java注解和反射是Java语言中两个强大的特性,它们可以一起使用以实现动态的、灵活的编程和元数据处理 注解 Java注解(Annotatio…

振弦采集读数模块开发原理详细介绍

飞讯教学篇:振弦采集读数模块开发原理详细介绍 振弦采集读数模块是一种用于采集弦振信息的模块,其原理是通过传感器感知弦的振动,将其转化为电信号,然后经过模拟处理和数字化处理,最终输出为可供后续处理的数字信号。…

Python照片压缩教程:如何轻松减小图片大小

介绍 在日常的编程工作中,我们经常需要处理图像,例如上传、下载、显示、编辑等。有时候,我们需要对图像进行压缩,以减少占用的空间和带宽,提高加载速度和用户体验。那么,如何用Python来实现图像压缩呢&…

【数据分析】统计量

1. 均值、众数描述数据的集中趋势度量,四分位差、极差描述数据的离散程度。 2. 标准差、四分位差、异众比率度量离散程度,协方差是度量相关性。 期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为: 从直观上来看&…

开源vue动态表单组件

一、项目简介 vueelement的动态表单组件,拖拽组件到面板即可实现一个表单 二、实现功能 支持拖拽 支持输入框 支持文本框 支持数字输入框 支持下拉选择器 支持多选框 支持日期控件 支持开关 支持动态表格 支持上传图片 支持上传文件 支持标签 支持ht…

无涯教程-Python机器学习 - Semi-supervised Learning函数

Python机器学习 中的 Semi - 无涯教程网无涯教程网提供https://www.learnfk.com/python-machine-learning/machine-learning-with-python-semi-supervised-learning.html

图像翻拍检测——反射分量分离的特征融合

随着计算机技术的迅速发展,需要建立人与信息一一对应的安保认证技术,通过建立完整的映射网络体系,从而确保每个人的人身、财产、隐私等的安全.与指纹、基因等人体生物特征识别系统相比,人脸识别系统更加友好,不需要人的…

【C语言】位操作符的一些题目与技巧

初学者在学完位操作符之后,总是不能很好的掌握,因此这篇文章旨在巩固对位操作符的理解与使用。 有的题目可能会比较难以接受,但是看完一定会有收获 目录 位操作符:一些题目:不创建临时变量交换整数整数转换二进制中1的…

【校招VIP】产品设计分析之思维整体性

考点介绍: 对于产品分析设计时需要全面的分析用户需求,而产品思维方式的核心是“以问题为核心”,即先多花时间搞清楚要解决的问题究竟是什么,要深入、全面的思考。 『产品设计分析之思维整体性』相关题目及解析内容可点击文章末尾…

揭秘偏向锁的升级

今天开始,我会和大家一起深入学习synchronized的原理,原理部分会涉及到两篇: 偏向锁升级到轻量级锁的过程轻量级锁升级到重量级锁的过程 今天我们先来学习偏向锁升级到轻量级锁的过程。因为涉及到大量HotSpot源码,会有单独的一篇…

从钉钉到金蝶云星空通过接口配置打通数据

从钉钉到金蝶云星空通过接口配置打通数据 对接系统钉钉 钉钉(DingTalk)是阿里巴巴集团打造的企业级智能移动办公平台,是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时沟通、钉钉文档、钉闪会、钉盘、Teambition、OA审批、智能…

python | 将pdf文件转换为图片,这一招就够了

一、背景 部分情况下,需要将 PDF 页面转换为图片,例如 PNG 或 JPEG 格式。 python 的开源库 pdfplumber,提供了将 pdf 文件转换为图片的方法。 如果之前还没有安装和使用过pdfplumber库,pdfplumber的安装及基础使用,可…

【React学习】—SetState的使用(九)

【React学习】—SetState的使用(九) state的简写方式 state属性总结