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

线程基本方法

1。设置线程名
    继承Thread类的线程,可以直接使用.setName()方法,设置线程名。也可以使用构造方法,需要注意java默认不继承构造方法,所以需要自己调用下父类的构造方法。

public class Demo {public static void main(String[] args) {MyThread myThread1=new MyThread("飞机");myThread1.start();MyThread myThread2=new MyThread();myThread2.setName("火箭");myThread2.start();//当jvm虚拟机启动后,会自动的启动多条线程,其中一条是main主线程//主线程的作用是调用main方法,并执行其中的代码,在以前,我们写的所有代码,其实都是运行在main线程中Thread thread=Thread.currentThread();System.out.println(thread.getName());//获取优先级System.out.println(myThread1.getPriority());//线程的默认优先级都是5,包括main线程}
}
public class MyThread extends Thread {@Overridepublic void run() {for (int i = 0; i < 100; ++i) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//在不设置线程名的情况下,线程名默认是Thread+线程序号System.out.println(getName());}}//构造方法子类默认不继承,所以这里需要通过super关键字调用父类Thread的构造方法,给Thread设置名字public MyThread() {}public MyThread(String name) {super(name);}
}

 实现runnable接口的线程,可以使用.setName方法。但是不能使用构造方法,因为他不像上面继承Thread类的线程,他没有父类的构造方法可以调用。

public class Mythread implements Runnable {@Overridepublic void run() {for (int i = 0; i < 100; ++i) {String name = Thread.currentThread().getName();System.out.println("你好世界!"+"----"+name);}}
}
public class Demo {public static void main(String[] args) {Mythread mythread=new Mythread();Thread t1=new Thread(mythread);t1.setName("线程1");Thread t2=new Thread(mythread);t2.setName("线程2");t1.start();t2.start();//获取优先级System.out.println(t1.getPriority());}
}

2. join方法  当前线程需要等待 调用join方法的线程执行完毕,当前线程才能继续执行

public class Demo {public static void main(String[] args) throws InterruptedException {MyThread myThread = new MyThread();myThread.start();// 在默认情况下,当前线程和在当前线程添加的线程会交替执行// 使用了join方法后,当前线程会等待myThread执行完毕,后继续执行本线程myThread.join();for (int i = 0; i < 10; i++) {Thread.sleep(1);//模拟主线程执行耗时System.out.println(Thread.currentThread().getName());}}
}
public class MyThread extends Thread {@Overridepublic void run() {for (int i = 0; i < 100; ++i) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("自定义线程"+i);}}
}

执行结果:MyThread执行完后,才执行main线程的输出语句

3。

setDaemon

守护线程:当其他非守护线程执行完毕,守护线程不管是否执行完毕,都会停止。

就像舔狗(守护线程)和女神(非守护线程),如果女神走了,那舔狗啥都不管,也走。

主线程

public class Demo {public static void main(String[] args) {NvShenThread nvShenThread=new NvShenThread();TianGouThread tianGouThread =new TianGouThread();//将舔狗线程设置为守护线程 守护线程:当其他非守护线程执行完毕,会自动停止守护线程//应用场景:qq聊天和发送文件,聊天框关闭,发送文件也应当停止tianGouThread.setDaemon(true);nvShenThread.start();tianGouThread.start();}
}

女神线程(非守护线程)

public class NvShenThread extends Thread {@Overridepublic void run() {for (int i = 0; i < 10; i++) {try {Thread.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("女神线程执行"+"----"+i);}}
}

舔狗线程(守护线程)

public class TianGouThread extends Thread {@Overridepublic void run() {for (int i = 0; i < 100; i++) {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("舔狗线程执行"+"----"+i);}}
}

相关文章:

线程基本方法

1。设置线程名 继承Thread类的线程&#xff0c;可以直接使用.setName()方法&#xff0c;设置线程名。也可以使用构造方法&#xff0c;需要注意java默认不继承构造方法&#xff0c;所以需要自己调用下父类的构造方法。 public class Demo {public static void main(String[…...

Linux操作系统 1.初识Linux

一、Linux学习大致内容 二、操作系统概述 操作系统的作用&#xff1a; 常见操作系统&#xff1a; 1、pc&#xff08;电脑端&#xff09;&#xff1a;windows、Linux、MacOS 2、移动端&#xff1a;Android、ios、鸿蒙系统 总结 1.计算机由哪两个部分组成&#xff1f;、 硬件…...

分布式事务-两阶段提交2PC

2PC协议就是两阶段提交&#xff0c;用来解决分布式事务&#xff0c;分为两个阶段&#xff0c;分别为Prepare和Commit&#xff0c;也是PC由来。 第一阶段Prepare 提交事务请求 如图所示&#xff0c;主要流程有以下三个方面 询问&#xff1a;事务协调者(Manager)向所有的事务参与…...

初识Spring (Spring 核心与设计思想)

文章目录 什么是 Spring什么是容器什么是 IoC理解 Spring IoCDI 概念 什么是 Spring Spring 官网 官方是这样说的: Spring 让每个人都能更快、更轻松、更安全地进行 Java 编程。春天的 专注于速度、简单性和生产力使其成为全球最受欢迎Java 框架。 我们通常所说的 Spring 指的…...

智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.教与学算法4.实验参数设定5.算法结果6.参考文献7.…...

Bitcoin SV 和 Bitcoin Core 之间首次跨链原子交换

我们已经执行了 Bitcoin SV 和 Bitcoin Core 之间的首次原子交换。 这一成就代表了比特币 SV 的重大进步&#xff0c;以去信任的方式促进了与其他区块链的无缝互操作性。 图片源自Gemini 在上一篇文章中&#xff0c;我们解释了原子交换的高级理论。 我们深入研究了使用哈希时间…...

RT-DETR改进 | 2023 | InnerEIoU、InnerSIoU、InnerWIoU、InnerDIoU等二十余种损失函数

论文地址&#xff1a;官方Inner-IoU论文地址点击即可跳转 官方代码地址&#xff1a;官方代码地址-官方只放出了两种结合方式CIoU、SIoU 本位改进地址&#xff1a; 文末提供完整代码块-包括InnerEIoU、InnerCIoU、InnerDIoU等七种结合方式和其AlphaIoU变种结合起来可以达到二十…...

JDBC编程基础

JDBC编程基础 JDBC介绍创建JDBC项目的步骤1.引入依赖2.注册驱动3.获取数据库连接4.获取sql执行对象 JDBC 常用 API 详解sql执行对象PreparedStatement作用 事务管理结果集对象 JDBC项目demo测试 JDBC介绍 每个数据库都会提供一组API来支持程序员实现自己客户端&#xff0c;自己…...

Linux shell命令

Linux shell命令 1、Shell简介 ​ Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 ​ Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问…...

Vue 3 面试经验分享

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

Vue简易的车牌输入键盘,可以根据需要修改

效果图如下&#xff1a; 代码如下&#xff1a; <template><div><div class"carNoBoxInput"><div style"padding: 6px;border: 2px solid #fff;border-radius: 6px;margin: 6px 3px 6px 6px;"><input class"inputBox"…...

十分钟搭建VScode C/C++运行环境

一、下载配置vscode 1.下载安装VScode 地址&#xff1a;https://code.visualstudio.com/download 下载后&#xff0c;运行安装程序 (VSCodeUserSetup-{version}.exe)。这只需要一分钟。安装程序会将 Visual Studio Code 添加到环境变量中%&#xff0c;可以使用CMD键入“code”…...

控制台gbk乱码

引用IntelliJ IDEA中 统一设置编码为utf-8或GBK-CSDN博客 特别注意file coding 的文件path和java的编码格式 配置...

Springboot日志-logback

logback-spring.xml的配置项 共有一个父标签、两种属性、三个节点: 一个父标签&#xff1a;configuration 两种属性&#xff1a;contextName和property 三个节点&#xff1a;appender、root、logger 日志级别 日志级别从低到高分为TRACE < DEBUG < INFO < WARN &…...

六、Lua 运算符

文章目录 一、Lua 运算符&#xff08;一&#xff09;算术运算符&#xff08;二&#xff09;关系运算符&#xff08;三&#xff09;逻辑运算符&#xff08;四&#xff09;其他运算符 二、运算符优先级 一、Lua 运算符 运算符是一个特殊的符号&#xff0c;用于告诉解释器执行特定…...

Android frameworks 开发总结十一

1.修改GMS的setup wizard 1.1 找到需要修改的文件 打开vendor/partner_gms/apps/GmsSampleIntegration/res/values/config.xml文件。以Arashi R为例: <resources><string name="wizard_script_uri" translatable="false">android.resource…...

学嵌入式,已经会用stm32做各种小东西了,下一步是什么

学嵌入式&#xff0c;已经会用stm32做各种小东西了&#xff0c;下一步是什么&#xff0c;研究stm32的内部吗&#xff1f; 针对题主这种类型的&#xff0c;首先我想提出几个技术问题。 1&#xff0c;除了那几个常用的外设&#xff0c;stm32上集成的众多外设是否都有实际的使用经…...

Java面试题10

1.MyBatis 中 #{}和 ${}的区别是什么&#xff1f; #{} 是预编译的占位符&#xff0c;MyBatis会将其转化为一个占位符参数&#xff0c;安全性较高&#xff0c;可以防止 SQL注入&#xff1b; ${} 是字符串替换&#xff0c;直接将内容替换到SQL语句中&#xff0c;不会进行参数处理…...

DBeaver连接MySQL提示“Public Key Retrieval is not allowed“问题解决方式

更新时间&#xff1a;2023年10月31日 11:37:53 作者&#xff1a;产品人小柒 dbeaver数据库连接工具,可以支持几乎所有的主流数据库.mysql,oracle.sqlserver,db2 等等,这篇文章主要给大家介绍了关于DBeaver连接MySQL提示"Public Key Retrieval is not allowed"问…...

振弦式轴力计和振弦采集仪组成的安全监测解决方案

振弦式轴力计和振弦采集仪组成的安全监测解决方案 振弦式轴力计和振弦采集仪是一种常用的结构安全监测工具&#xff0c;可以用于评估建筑物、桥梁、隧道或其他结构的结构健康状态和安全性能。这种监测方案较为先进、精确&#xff0c;并且能够监测长期的结构反应&#xff0c;因此…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...