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

【多线程】Thread的常用方法

Thread的常用方法

1.构造器

Thread提供的常见构造器说明
public Thread(String name)可以为当前线程指定名称
public Thread(Runnable target)封装Runnable对象成为线程对象
public Thread(Runnable target,String name)封装Runnable对象成为线程对象,并指定线程名称
public class Demo01 {public static void main(String[] args) {//public Thread(String name); 创建线程对象并设置线程名称MyThread t1 = new MyThread("火车");t1.start();//public Thread(Runnable target); 封装Runnable对象成为线程对象Thread t2 = new Thread(new MyRunnable(), "高铁");t2.start();}
}//线程实现方式一
class MyThread extends Thread {public MyThread(){}//子类将名称直接交给父类的构造器初始化public MyThread(String name) {super(name);}@Overridepublic void run() {//public void run(); 封装线程任务的方法for (int i = 1; i <= 10; i++) {//public String getName(); 获取线程名称System.out.println(getName() + ":" + i);}}
}//线程实现方式二
class MyRunnable implements Runnable {@Overridepublic void run() {for (int i = 1; i <= 10; i++) {System.out.println(Thread.currentThread().getName() + ":" + i);}}
}

2.方法

Thread提供的常用方法说明
public void run()线程的任务方法
public void start()启动线程
public String getName()获取当前线程的名称,线程名称默认是Thread-索引
public void setName(String name)为线程设置名称
public static Thread currentThread()获取当前线程的执行对象
public static void sleep(long time)让当前执行的线程休眠多少毫秒后,再继续执行
public final void join()让调用当前这个方法的线程先执行完
public class Demo02 {public static void main(String[] args) {MyThread t1 = new MyThread();//public void setName(); 设置线程名称t1.setName("火车");//public void start(); 启动线程t1.start();//public Thread(Runnable target); 封装Runnable对象成为线程对象Thread t2 = new Thread(new MyRunnable(), "高铁");t2.start();}
}//线程实现方式一
class MyThread extends Thread {@Overridepublic void run() {//public void run(); 封装线程任务的方法for (int i = 1; i <= 10; i++) {//public String getName(); 获取线程名称System.out.println(getName() + ":" + i);}}
}//线程实现方式二
class MyRunnable implements Runnable {@Overridepublic void run() {for (int i = 1; i <= 10; i++) {System.out.println(Thread.currentThread().getName() + ":" + i);}}
}
public static void sleep(long time)让当前执行的线程休眠多少毫秒后,再继续执行
public final void join()让调用当前这个方法的线程先执行完
public class Demo03 {public static void main(String[] args) throws InterruptedException {//public static void sleep(long time); 让当前执行的线程,休眠指定毫秒后继续运行
//        System.out.println("测试开始");
//        Thread.sleep(3000);
//        System.out.println("测试开始");//public final void join(); 让调用这个方法的线程,启动后优先执行完毕//Java中如何控制三个线程,按指定顺序执行完毕(三个方法启动后都加join,调整顺序即可实现)Thread t3 = new Thread(() -> {for (int i = 1; i <= 5; i++) {System.out.println(Thread.currentThread().getName() + ":" + i);}}, "线程3");t3.start();t3.join(); Thread t2 = new Thread(() -> {for (int i = 1; i <= 5; i++) {System.out.println(Thread.currentThread().getName() + ":" + i);}}, "线程2");t2.start();t2.join(); Thread t1 = new Thread(() -> {for (int i = 1; i <= 5; i++) {System.out.println(Thread.currentThread().getName() + ":" + i);}}, "线程1");t1.start();t1.join(); }
}

3.补充

(1)线程分为两种调度模型

  • 分时调度,所有线程轮流使用CPU,平均分配时间

  • 抢占式调度:优先级高的获取CPU时间相对长一些(不是绝对),如果优先级相同会随机选择,Java中线程的调度模型为抢占式调度,在同一时刻,线程抢夺CPU的执行权是随机的

  • public final void setDaemon(boolean on):设置当前线程为守护线程,当其他线程执行完毕了,守护线程也就跟着停止了,但不是立刻

    public class Demo03 {public static void main(String[] args) {//public final void setDaemon(boolean on); 设置当前线程为守护线程new Thread(() -> {for (int i = 1; i <= 10; i++) {System.out.println(Thread.currentThread().getName() + ":" + i);}}, "线程1").start();Thread t2 = new Thread(() -> {for (int i = 1; i <= 100; i++) {System.out.println(Thread.currentThread().getName() + ":" + i);}}, "线程2");//public final void setDaemon(boolean on); 设置当前线程为守护线程t2.setDaemon(true);t2.start();}
    }
    
  • public final void setPriority():设置线程优先级

  • public final int getPriority():获取线程优先级

    线程优先级高仅是抢到CPU的执行权相对几率大,不是绝对的

    public static final int MIN_PRIORITY=1;最低

    public static final int NORM_PRIORITY=5;默认

    public static final int MAX_PRIORITY=10;最高

public class Demo03 {public static void main(String[] args) {Thread t1 = new Thread(() -> {for (int i = 1; i <= 10; i++) {System.out.println(Thread.currentThread().getName() + ":" + i);}}, "飞机");//public final void setPriority();设置线程优先级//t1.setPriority(100); //数值超出了范围,抛异常 IllegalArgumentExceptiont1.setPriority(10);t1.start();Thread t2 = new Thread(() -> {for (int i = 1; i <= 10; i++) {System.out.println(Thread.currentThread().getName() + ":" + i);}}, "大炮");//System.out.println(t2.getPriority()); //默认是5t2.start();}
}

相关文章:

【多线程】Thread的常用方法

Thread的常用方法 1.构造器 Thread提供的常见构造器说明public Thread(String name)可以为当前线程指定名称public Thread(Runnable target)封装Runnable对象成为线程对象public Thread(Runnable target,String name)封装Runnable对象成为线程对象&#xff0c;并指定线程名称…...

windows 下docker安装宝塔镜像 宝塔docker获取镜像

1. docker 安装宝塔 打开链接&#xff1a;https://www.docker.com/get-started&#xff0c;找对应的版本下载docker&#xff0c;安装docker打开百度云盘&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1DGIjpKkNDAmy4roaKGLA_w 提取码&#xff1a;u8bi 2. 设置镜像 点…...

【FusionInsight 迁移】HBase从C50迁移到6.5.1(01)迁移概述

【FusionInsight 迁移】HBase从C50迁移到6.5.1&#xff08;01&#xff09;迁移概述 HBase从C50迁移到6.5.1&#xff08;01&#xff09;迁移概述迁移范围迁移前的准备HDFS文件检查确认HBase迁移目录确保数据落盘停止老集群HBase服务停止新集群HBase服务 HBase从C50迁移到6.5.1&a…...

ETCD集群搭建(实践可用)

概述 etcd 是兼具一致性和高可用性的键值数据库&#xff0c;可以作为保存 Kubernetes 所有集群数据的后台数据库。 - 官方网址&#xff1a; Documentation versions | etcd 准备cfssl证书生成工具 cfssl是一个开源的证书管理工具&#xff0c;使用json文件生成证书. 在任意一…...

基于stm32f103rct6的呼吸灯实现

一、PWM 我们可以通过改变灯的有效电压占空比来实现呼吸灯效果。其中我们要用到PWM&#xff08;脉宽调制&#xff09;&#xff0c;通过pwm我们可以来改变高电平的占空比 占空比&#xff1a;在一个周期中&#xff0c;高电平所占整个周期的百分比 具体如图&#xff1a; 当我们用…...

关于火绒邮件监控引起的扫描任意IP会有25和110端口反馈

之前测试过公司的外网IP&#xff0c;因为之前一直很注意对外映射的端口&#xff0c;都限制了可以访问的IP地址和端口&#xff0c;所以之前扫描的时候是一个端口都扫描不出来的。最近闲的无事&#xff0c;想着再扫描试试&#xff0c;结果发现居然开放了25和110端口&#xff0c;我…...

物联网应用中蓝牙模块怎么选?_蓝牙模块厂家

在蓝牙模块选型前期&#xff0c;一定要了解应用场景以及需要实现的功能&#xff08;应用框图&#xff09;&#xff0c;以及功能实现过程中所能提供调用的接口&#xff08;主从设备&#xff0c;功能&#xff09;&#xff0c;考虑模块供电&#xff0c;尺寸&#xff0c;接收灵敏度…...

Mysql远程登录报错:Host ‘192.168.137.1‘ is not allowed to connect to this MySQL server

连接失败是因为数据库没有对指定的ip的服务器地址的连接进行授权&#xff0c;许哦一需要先进行授权。 1. 改表 先登录登录数据库&#xff1a;mysql -u root -p mysql>use mysql;mysql>update user set host % where user root;mysql>FLUSH PRIVILEGES; 2.授权 …...

vue去掉循环数组中的最后一组的某个样式style/class

vue去掉循环数组中的最后一组的某个样式style/class 需求&#xff1a;要实现这样的排列 现状 发现&#xff0c;最后一个格子并没有跟下面绿色线对齐。 最后发现 是因为 每个格子都给了 margin-right&#xff1a;36px&#xff0c;影响到了最后一个格子 所以要 将最后一个格子的…...

Vue2面试题100问

Vue2面试题100问 Vue2面试题100问1.简述一下你对Vue的理解2.声明式和命令式编程概念的理解3.Vue 有哪些基本特征4.vue之防止页面加载时看到花括号解决方案有哪几种&#xff1f;5.Vue中v-for与v-if能否一起使用&#xff1f;6.vue中v-if与v-show的区别以及使用场景7.v-on可以监听…...

开机启动应用

windows 建立快捷方式 winr 输入shell:startup 将快捷方式复制进来 就可以了 如果你有ccleaner&#xff0c;也可以看到...

RK3588平台产测之ArmSoM-W3 DDR压力测试

1. 简介 RK3588从入门到精通 ArmSoM团队在产品量产之前都会对产品做几次专业化的功能测试以及性能压力测试&#xff0c;以此来保证产品的质量以及稳定性 优秀的产品都要进行多次全方位的功能测试以及性能压力测试才能够经得起市场的检验 2. 环境介绍 硬件环境&#xff1a; …...

springboot初试elasticsearch

引入依赖 elasticsearch的依赖版本与你elasticsearch要一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> 索引库的操作 创建索引库 impo…...

Node.js安装教程图文详解

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 下载Node.js 请下载Node.js并保存至本地&#xff0c;官方网址&#xff1a;https://nodejs.org/zh-cn/ 在此&#xff0c;选择windows系统64位的16.13.1版本进行下载。 下载…...

laragon 为 php 安装 Xdebug 扩展

众所周知&#xff0c;php 自带的 var_dump() 输出格式很不直观 而 laragon 作为很好的 windos 下开发环境很受欢迎&#xff0c;本文就介绍如何快速为 laragon 的 php 安装 Xdebug&#xff0c;方便开发调试 一&#xff1a;启动开发环境&#xff0c;在任意可访问 php 页面中输出 …...

华为云 存在不支持迁移的外键解决方法

DRS 检测出源端存在不支持的外键引用操作 MySQL、GaussDB(for MySQL)为源的全量增量或增量迁移、同步场景&#xff0c;以及MySQL、GaussDB(for MySQL)为源灾备场景 表1 源端存在不支持的外键引用操作 预检查项 源端存在不支持的外键引用操作。 描述 同步对象中存在包含CASC…...

Linux 中的 cd 命令及示例

cd命令在Linux 中称为更改目录命令。它用于有效地从当前工作目录移动到系统中的不同目录。 Linux 中 `cd` 命令的语法 光盘[目录] cd [directory]在这里,将 [directory] ​​替换为您要导航到的目标目录的路径。 “cd”命令的实际实现与示例。...

【VUE】

概念 VUE是一个用于构建用户界面的渐进式框架 构建用户界面&#xff1a;基于数据渲染出用户看到的界面 渐进式&#xff1a;声明式渲染->组件系统->客户端路由->大规模状态管理->构建工具 框架&#xff1a;一套完整的项目解决方案 VUE使用方式&#xff1a; 1.…...

详解初阶数据结构之顺序表(SeqList)——单文件文件实现SeqList的增删查改

目录 一、线性表 二、顺序表 2.1概念及结构 2.2接口实现 2.3动态顺序表的创建 2.3动态顺序表的初始化 2.3.1传值初始化 2.3.2传址初始化 2.4动态顺序表的清空 2.5动态顺序表的扩容 2.6动态顺序表内容的打印 三、动态顺序表的使用 3.1尾插尾删 3.1.1尾插 3.1.2尾删…...

JavaScript中的深拷贝和浅拷贝

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 浅拷贝&#xff08;Shallow Copy&#xff09;&#xff1a;⭐深拷贝&#xff08;Deep Copy&#xff09;&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...

【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space

问题&#xff1a;IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案&#xff1a;将编译的堆内存增加一点 位置&#xff1a;设置setting-》构建菜单build-》编译器Complier...

(12)-Fiddler抓包-Fiddler设置IOS手机抓包

1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求&#xff0c;也可以截获各种智能手机发出的HTTP/ HTTPS 请求。 Fiddler 能捕获Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。同理也可以截获iOS设备发出的请求&#xff0c;比如 iPhone、iPad 和 MacBook 等苹…...