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 {
    @Override
    public 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());//5
        System.out.println(t2.getPriority());//5
        //修改优先级
        t1.setPriority(1);
        t2.setPriority(10);
        //运行线程
        t1.start();
        t2.start();
    }
}

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

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

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

public class MyThread1 extends Thread{

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(getName()+"@"+i);
        }
    }
}

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

public class MyThread2 extends Thread{
    @Override
    public 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.mfbz.cn/a/275976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SAM系列】Auto-Prompting SAM for Mobile Friendly 3D Medical Image Segmentation

论文链接&#xff1a;https://arxiv.org/pdf/2308.14936.pdf 核心&#xff1a; finetune SAM,为了不依赖外部prompt&#xff0c;通过将深层的特征经过一个编-解码器来得到prompt embedding&#xff1b;finetune完之后做蒸馏

苯酚,市场预计将以5%左右的复合年增长率

苯酚是一种重要的化合物&#xff0c;用于广泛的工业应用&#xff0c;包括塑料、树脂和合成纤维的生产。在建筑、汽车和电子行业不断增长的需求推动下&#xff0c;苯酚市场在过去十年中经历了稳步增长。全球苯酚市场分析&#xff1a; 在 2021-2026 年的预测期内&#xff0c;全球…

Java并发编程(三)

并发编程的三个特性 并发编程的三个重要特性是原子性、可见性和有序性。 原子性&#xff1a;原子性指的是一个操作是不可中断的&#xff0c;要么全部执行成功&#xff0c;要么全部不执行&#xff0c;是不可再分割的最小操作单位。保证原子性可以避免多个线程同时对共享数据进行…

《深入理解计算机系统》学习笔记 - 第七课 - 机器级别的程序三

Lecture 07 Machine Level Programming III Procedures 机器级别的程序三 文章目录 Lecture 07 Machine Level Programming III Procedures 机器级别的程序三概述程序机制 栈结构栈说明栈定义推入数据弹出数据 调用控制代码示例程序控制流程%rip 传递数据ABI 标准示例 管理局部…

WPF Button使用漂亮 控件模板ControlTemplate 按钮使用控制模板实例及源代码 设计一个具有圆角边框、鼠标悬停时颜色变化的按钮模板

续前两篇模板文章 模板介绍1 模板介绍2 WPF中的Button控件默认样式简洁&#xff0c;但可以通过设置模板来实现更丰富的视觉效果和交互体验。按钮模板主要包括背景、边框、内容&#xff08;通常为文本或图像&#xff09;等元素。通过自定义模板&#xff0c;我们可以改…

JVM篇:JVM的简介

JVM简介 JVM全称为Java Virtual Machine&#xff0c;翻译过来就是java虚拟机&#xff0c;Java程序&#xff08;Java二进制字节码&#xff09;的运行环境 JVM的优点&#xff1a; Java最大的一个优点是&#xff0c;一次编写&#xff0c;到处运行。之所以能够实现这个功能就是依…

Docker自建私人云盘系统

Docker自建私人云盘系统。 有个人云盘需求的人&#xff0c;主要需求有这几类&#xff1a; 文件同步、分享需要。 照片、视频同步需要&#xff0c;尤其是全家人都是用的同步。 影视观看需要&#xff08;分为家庭内部、家庭外部&#xff09; 搭建个人网站/博客 云端OFFICE需…

TiDB在WMS物流系统的应用与实践 (转)

业务背景 北京科捷物流有限公司于2003年在北京正式成立,是ISO质量管理体系认证企业、国家AAAAA级物流企业、海关AEO高级认证企业,注册资金1亿元,是中国领先的大数据科技公司——神州控股的全资子公司。科捷物流融合B2B和B2C的客户需求,基于遍布全国的物流网络与自主知识产…

电话号码的字母组合[中等]

一、题目 给定一个仅包含数字2-9的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意1不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "23" 输出&am…

【MySQL学习笔记008】多表查询及案例实战

1、多表关系 概述&#xff1a;项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系&#xff0c;基本上可分为三种&a…

什么是 NLP (自然语言处理)

NLP&#xff08;自然语言处理&#xff09;到底是做什么&#xff1f; NLP 的全称是 Natural Language Processing&#xff0c;翻译成中文称作&#xff1a;自然语言处理。它是计算机和人工智能的一个重要领域。顾名思义&#xff0c;该领域研究如何处理自然语言。 自然语言就是我…

小狐狸ChatGPT付费创作系统小程序端开发工具提示打开显示无法打开页面解决办法

最新版2.6.7版下载&#xff1a;https://download.csdn.net/download/mo3408/88656497 很多会员在上传小程序前端时经常出现首页无法打开的情况&#xff0c;错误提示无法打开该页面&#xff0c;不支持打开&#xff0c;这种问题其实就是权限问题&#xff0c;页面是通过调用web-v…

实习知识整理13:在购物车界面点击提交订单进入订单信息界面

在这块主要就是对前端传到后端的数据的处理&#xff0c;然后由后端再返还到新的前端界面 首先点击下单按钮后&#xff0c; 提交购物车中所选中的信息 因为前端是将name定义为 cartList[0].cartId &#xff0c;cartList[1].cartId 形式的 所以后端需要重新定义一个类来进行封装…

C语言中宏定义的一种妙用

1.前言 最近分析了一个宏定义的妙用方法&#xff0c;利用宏定义来构建一个枚举类型&#xff0c;通过自己代码测试验证&#xff0c;方法可行&#xff0c;分享给大家。 2.源码 实验源码如下所示&#xff1a; head1.h DEF_TEST(name1) DEF_TEST(name2) DEF_TEST(name3) #unde…

Redis哨兵sentinel

是什么&#xff1f; 哨兵巡查监控后台master主机是否故障&#xff0c;如果故障根据投票数自动将某一个slave库变为master&#xff0c;就行对外服务&#xff0c;称为无人值守运维 能干嘛&#xff1f; 主从监控&#xff1a;监控主从redis库是否正常工作 消息通知&#xff1a;…

带大家做一个,易上手的家常红烧茄子

我们先准备茄子 我这里用的一个大茄子 建议大茄子两个 一个做出来 还是看着有点少 茄子切成滚刀块 茄子倒入 小半勺盐 然后用手抓拌均匀 腌制十分钟 准备一根半小葱 三瓣蒜 蒜切成 蒜末 葱切碎 调一个料汁 两勺生抽 半勺老抽 半勺白砂糖 半勺盐 倒一点蚝油 半勺淀粉 小半…

在用Vite开发时静态图片放哪里,才能保证显示,不出现找不到资源

在用Vite开发时静态图片放哪里 在用Vite开发时静态图片&#xff08;资源&#xff09;放哪里呢 &#xff1f; 如果你想直接全部显示的那么请你把静态资源放到public目录下面&#xff0c;这样你一打包所有的静态资源都会放到打包根目录下。但是此时你在项目中引用的地址一定要是…

github登录需要双因素认证(Two-factor authentication)

前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 github登录需要双因素认证&#xff08;Two-factor authentication&#xff09; 今天登录github发现需要绑定双因素才能够登录 我们…

【开源】基于Vue+SpringBoot的实验室耗材管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗材出库模块2.4 耗材申请模块2.5 耗材审核模块 三、系统展示四、核心代码4.1 查询耗材品类4.2 查询资产出库清单4.3 资产出库4.4 查询入库单4.5 资产入库 五、免责说明 一、摘要 1.1…

单文件超过4GB就无法拷贝到U盘?这个你一定要知道

前言 随着现在科技发展&#xff0c;小伙伴们所使用的数据也越变越大。还记得WindowsXP流行的时候&#xff0c;XP的镜像文件仅为几百MB大小。 但是现在随便一个系统就有可能超过4GB。 如果单个文件超过4GB就有可能没办法拷贝进U盘&#xff0c;在这里就需要给小伙伴们普及一下U…
最新文章