Java多线程常见的成员方法(线程优先级,守护线程,礼让/插入线程)

目录

  • 1.多线程常见的成员方法
  • 2.优先级相关的方法
  • 3.守护线程(备胎线程)
  • 4.其他线程

1.多线程常见的成员方法

在这里插入图片描述

①如果没有给线程设置名字,线程是有默认名字 的:Thread-X(X序号,从0开始)
②如果要给线程设置名字,可以使用set方法或者子类继承Thread的构造方法设置。
例如: MyThread t1 = new MyThread("坦克");
currentThread()方法:
当JVM虚拟机启动之后,会自动的启动多条线程,
其中有一条线程就叫做main线程,
他的作用就是去调用main方法,并执行里面的代码,
在以前,我们写的所有的代码,其实都是运行在main线程当中。
sleep(long time):
让当前执行的线程睡眠对应的时间,参数单位为毫秒,当睡眠时间结束后,线程会继承执行后面的其他代码。

2.优先级相关的方法

线程的调度分为抢占式调度(随机性)和非抢占式调度。
线程优先级最小为1,最大是10,默认是5

定义一个类实现Runnable接口

public class Myrun implements Runnable {@Overridepublic void run() {//重写方法for (int i = 0; i < 100; i++) {System.out.println(Thread.currentThread().getName() + ":hello world!" + i);}}
}

测试类:查看线程优先权,修改线程优先权并运行查看线程的执行顺序。

public class Demo2 {public static void main(String[] args) {//创建线程要执行的参数对象Myrun mr = new Myrun();//创建线程对象Thread t1 = new Thread(mr, "飞机");Thread t2 = new Thread(mr, "坦克");//查看线程的优先级System.out.println(t1.getPriority());//5System.out.println(t2.getPriority());//5//修改优先级t1.setPriority(1);t2.setPriority(10);//运行线程t1.start();t2.start();}
}

3.守护线程(备胎线程)

当非守护线程结束之后,守护线程会陆续结束
应用场景:当聊天窗口关闭时,传输文件(守护线程)就没有存在的必要了。

定义守护线程,继承父类,重写run方法:打印100次线程名:

public class MyThread1 extends Thread{@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println(getName()+"@"+i);}}
}

定义非守护线程:打印10次线程名

public class MyThread2 extends Thread{@Overridepublic void run() {for (int i = 0; i < 100; i++) {System.out.println(getName()+"@"+i);}}
}

主函数:观察守护线程的结束时机

public class Demo1 {public static void main(String[] args) {//创建线程MyThread1 t1 = new MyThread1();MyThread2 t2 = new MyThread2();//设置线程名t1.setName("女神");t2.setName(" 备胎");//把第二个线程设置为守护线程t2.setDaemon(true);//启动线程,观察守护线程的结束时机t1.start();t2.start();}
}

4.其他线程

出让线程/礼让线程:Thread.yield();
让线程的执行尽可能地均匀分布。
②插入线程:t.join();
表示将t线程插入到当前线程之前运行。

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

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

相关文章

骑砍战团MOD开发(25)-module_animations.py骨骼动画

一.引擎固化骨架 Data\skeleton_bodies.xml:定义系统骨架skel_human,skel_horse. <Skeletons><Skeleton name"skel_human"><Skeleton name"skel_horse"> </Skeletons> CommonRes\skeletons.brf 为skel_human的资源文件,适用BRF打…

第三节 项目commit规范

系列文章目录 目录 系列文章目录 前言 实现方法 总结 前言 多人开发项目时&#xff0c;每次Git提交都不明确提交了什么&#xff0c;增加功能&#xff1f;修复bug&#xff1f;修改了代码格式&#xff1f;没有哦规则。那我们制定制定提交类型及如何写提交信息的规则&#xf…

接口测试工具——ApiFox使用初体验 postman导出和ApiFox导入

目录 ApiFox使用初体验初步使用从postman导出到apifox导入 IDEA简单测试Postman测试工具post请求 接口测试工具swaggerKnife4j1.引入依赖2.配置3.常用注解4.接口测试 JMeter什么是JMeter?JMeter安装配置1.官网下载2.下载后解压3.汉语设置 JMeter的使用方法1.新建线程组2.设置参…

Go 泛型之泛型约束

Go 泛型之泛型约束 文章目录 Go 泛型之泛型约束一、引入二、最宽松的约束&#xff1a;any三、支持比较操作的内置约束&#xff1a;comparable四、自定义约束五、类型集合&#xff08;type set&#xff09;六、简化版的约束形式七、约束的类型推断八、小结 一、引入 虽然泛型是…

Tiny Object Detection

文章目录 RFLA: Gaussian Receptive Field based Label Assignment for Tiny Object Detection&#xff08;ECCV2022&#xff09;Dynamic Coarse-to-Fine Learning for Oriented Tiny Object Detection&#xff08;CVPR2023&#xff09;TOD-CMLNN&#xff08;2023&#xff09; …

Bind for 0.0.0.0:2379 failed: port is already allocated

1、执行命令docker-compose -p docker-apisix up -d 报错 Error response from daemon: driver failed programming external connectivity on endpoint docker-apisix-etcd-1 (2a92a0cefff9194fcd1dad4bdeabf4201d9047ec2633eda455c6e46528668af4): Bind for 0.0.0.0:2379 fa…

Vue3-27-路由-路径参数的简单使用

什么是路径参数 在路由配置中&#xff0c;可以将【参数】放在【路由路径】中&#xff0c; 从而实现&#xff0c;同一个 路由&#xff0c;同一个组件&#xff0c;因路径参数不同&#xff0c;可以渲染出不同的内容。特点 &#xff1a; 1、当携带不同路径参数的路由相互跳转时&am…

im6ull学习总结(三)文字显示

文字显示 字符编码方式 编码与字体 一个字符以不同编码形式会保存为不同的二进制数。 ASCII American Standard Code for Information Interchange”的缩写&#xff0c;美国信息交换标准代码。 一个字节的 7 位就可以表示 128 个数值&#xff0c;在 ASCII 码中最高位永远是…

MySQL事务、四大原则、执行步骤、四种隔离级别、锁、脏读、脏写等

MySQL事务 MySQL事务1.什么是事务&#xff1f;2.事务的四大原则3.事务执行的步骤4、事务的隔离性5、MySQL中的锁 MySQL事务 模拟一个转账业务&#xff1a; 上图中的sql语句&#xff1a; update from table set money mongey - 100 where name A; update from table set mone…

rime中州韵 symbols.custom.yaml 配置

今天我们所做的配置&#xff0c;将实现扩展符号的输入效果&#xff0c;如下&#x1f447;&#xff1a; 基础扩展符号的配置 要实现输入法能够输入扩展的符号&#xff0c;我们需要在输入方案中引入扩展符号集。 如果你使用的输入方案是 wubi_pinyin.schema.yaml&#xff0c;…

linux用户态与内核态通过字符设备交互

linux用户态与内核态通过字符设备交互 简述 Linux设备分为三类&#xff0c;字符设备、块设备、网络接口设备。字符设备只能一个字节一个字节读取&#xff0c;常见外设基本都是字符设备。块设备一般用于存储设备&#xff0c;一块一块的读取。网络设备&#xff0c;Linux将对网络…

【数据结构】插入排序、选择排序、冒泡排序、希尔排序、堆排序

前言&#xff1a;生活中我们总是会碰到各种各样的排序&#xff0c;今天我们就对部分常用的排序进行总结和学习&#xff0c;今天的内容还是相对比较简单的一部分&#xff0c;各位一起加油哦&#xff01; &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f44…