Java的Thread类中的常用方法解析

news2024/11/15 8:37:39

Java可以通过Thread类实现多线程,下面来介绍几个Thread类中常用的方法

void start()

开启线程,jvm自动调用run方法

void run()

设置线程任务,这个run方法是Thread重写的接口Runnable中的run方法

String getName()

获取线程名字

void setName(String name)

给线程设置名字

public class Test {
    public static void main(String[] args) throws InterruptedException {
        MyThread t1 = new MyThread();//创建线程对象
        t1.setName("金莲");//给线程设置名字
        t1.start();//调用start方法,开启线程,jvm自动调用run方法
        for (int i = 0; i < 10; i++) {
            Thread.sleep(1000L);
            System.out.println(Thread.currentThread().getName()+"线程执行了"+i);
        }
    }
}

static Thread currentThread()

获取正在执行的线程对象(此方法在哪个线程中使用,获取的就是哪个线程对象),也可以在主线程当中使用。

static void sleep(long millis)

线程睡眠,超时后自动醒来继续执行,传递的是毫秒值

public class MyThread extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep(1000L); //线程睡眠
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println(Thread.currentThread().getName()+"执行了"+i);
        }
    }
}

void setPriority(int newPriority)

设置线程优先级,优先级越高的线程,抢到CPU使用权的几率越大,但是不是每次都先抢到

int getPriority()

获取线程优先级

void setDaemon(boolean on)

设置为守护线程,当非守护线程执行完毕,守护线程就要结束,但是守护线程也不是立马结束,当非守护线程结束之后,系统会告诉守护线程非守护线程结束了,你也结束吧,在告知的过程中,守护线程会执行,只不过执行到半路就结束了。

public class Test {
    public static void main(String[] args) {
        MyThread t1 = new MyThread();
        t1.setName("张三");
        MyThread1 t2 = new MyThread1();
        t2.setName("李四");
        t2.setDaemon(true);//将t2设置成守护线程
        t1.start();
        t2.start();
    }
}
public class MyThread extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName()+"执行了"+i);
        }
    }
}
public class MyThread1 extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName()+"执行了"+i);
        }
    }
}

可以看到第一个线程结束以后,守护线程并没有执行完就结束了。
在这里插入图片描述

static void yield()

礼让线程,让当前线程让出CPU使用权,如果两个线程一起执行,可能会执行一会儿线程A,再执行一会线程B,或者可能线程A执行完毕了,线程B还要执行好久。yield()方法能尽量让两个线程交替执行。

void join()

插入线程或者叫做插队线程
两个方法一起展示如下:

public class MyThread extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName()+"执行了"+i);
            Thread.yield();
        }
    }
}
public class Test {
    public static void main(String[] args) throws InterruptedException {
        MyThread t1 = new MyThread();
        t1.setName("张三");
        MyThread t2 = new MyThread();
        t2.setName("李四");
        t1.start();
        t1.join();//表示把t1插入到当前线程之前,t1要插到t2线程之前
        t2.start();
    }
}

使用static void yield()可以看到执行结果比较平均
在这里插入图片描述
使用void join() 可以看到第一个线程执行完才会执行第二个
在这里插入图片描述

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

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

相关文章

linux 安装Openjdk1.8

一、在线安装 1、更新软件包 sudo apt-get update 2、安装openjdk sudo apt-get install openjdk-8-jdk 3、配置openjdk1.8 openjdk默认会安装在/usr/lib/jvm/java-8-openjdk-amd64 vim ~/.bashrc export JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME${J…

【Linux】文件和目录管理命令——ls,cp,rm,mv

1.文件与目录的查看&#xff1a;Is ls [-aAdfFhilnrRst] 文件名或目录名称ls [ --color{never&#xff0c;auto&#xff0c;always} ]文件名或目录名称ls [ --full-time ]文件名或目录名称 选项与参数&#xff1a; -a&#xff1a;全部的文件&#xff0c;连同隐藏文件&am…

电子产品分销商 DigiKey 在新视频系列中探索智能城市中的AI

电子产品分销商DigiKey推出了一系列新视频&#xff0c;深入探讨了AI在智能城市中的集成应用。这个名为“智能世界中的AI”的系列是其“城市数字”视频系列的第四季&#xff0c;它审视了城市环境中从基础设施到公共服务的多种AI硬件和软件的部署情况。 该系列由电子制造商莫仕&…

Java的垃圾回收机制解说

Java 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭&#xff1b;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的&#xff08;尽管在运行期会由 JIT 编译器进行一些优化&…

苹果电脑视频压缩工具,苹果电脑视频压缩软件

随着数字媒体内容的爆炸性增长&#xff0c;视频文件的体积越来越大&#xff0c;如何在保证画质的前提下&#xff0c;有效地压缩视频文件&#xff0c;成为许多创作者和普通用户的一大需求。本文将为您详细介绍视频压缩界的佼佼者&#xff0c;让您轻松应对视频文件体积过大的难题…

vue3中使用 tilwindcss报错 Unknown at rule @tailwindcss

解决方法&#xff1a; vscode中安装插件 Tailwind CSS IntelliSense 在项目中的 .vscode中 settings.json添加 "files.associations": {"*.css": "tailwindcss"}

网络连接线相关问题

问题1&#xff1b; 直通线为什么两头都是T568B&#xff1f;是否可以两台T5568A&#xff1f;或者任意线序&#xff0c;只需两头一致&#xff1f; 不行&#xff0c;施工规范规定。&#xff08;原因&#xff1b;网线最长距离100m&#xff0c;实际用起来要把网线包管&#xff0c;走…

Mapboxgl 根据 AWS 地形的高程值制作等高线

更多精彩内容尽在dt.sim3d.cn&#xff0c;关注公众号【sky的数孪技术】&#xff0c;技术交流、源码下载请添加VX&#xff1a;digital_twin123 使用mapboxgl 3.0版本&#xff0c;根据 AWS 地形图块的高程值制作等高线&#xff0c;源码如下&#xff1a; <!DOCTYPE html> &…

CSS content 计数器

CSS content 计数器 CSS 计数器通过一个变量来设置&#xff0c;根据规则递增变量。 使用计数器自动编号 CSS 计数器根据规则来递增变量。 CSS 计数器使用到以下几个属性&#xff1a; counter-reset - 创建或者重置计数器&#xff0c;给计算器命名。注意声明计算器不能在自身…

乡村振兴指数与其30个原始变量数据(Shp/Dta/Excel格式,2000-2022年)

数据简介&#xff1a;这份数据是我国各地级市乡村振兴指数与其30各原始变量数据并对其进行地图可视化表达。城镇化是当今中国社会经济发展的必由之路。当前我国城镇化处于发展的关键时期&#xff0c;但城镇化发展的加快却是一把双刃剑&#xff0c;为何要如此形容呢?因为当前城…

【产品经理】订单处理12-订单的取消与反取消

在电商ERP系统中&#xff0c;订单取消与反取消也是常见功能之一。 订单取消与反取消也是电商ERP系统的常见功能&#xff0c;本次主要讲解下订单取消与反取消的逻辑。 一、订单取消 在电商ERP系统中&#xff0c;订单取消一般由审单员操作&#xff0c;此类取消一般是由于上下游…

ICMP隧道

后台私信找我获取工具 目录 ICMP隧道作用 ICMP隧道转发TCP上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 执行后门木马&#xff0c;本地上线 ICMP隧道转发SOCKS上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 ​执行后…

gui创新点charts图表

import javax.swing.*; import java.awt.*;public class ComboChartExample extends JPanel {Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 数据int[] values {100, 200, 150, 300, 250};int[] lineValues {120, 180, 160, 280, 230};Str…

Pytorch实战(二):VGG神经网络

文章目录 一、诞生背景二、VGG网络结构2.1VGG块2.2网络运行流程2.3总结 三、实战3.1搭建模型3.2模型训练3.3训练结果可视化3.4模型参数初始化 一、诞生背景 从网络结构中可看出&#xff0c;所有版本VGG均全部使用33大小、步长为1的小卷积核&#xff0c;33卷积核同时也是最小的能…

Jenkins 常用的 Linux 指令

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

MNN安装和编译 Win10

如何优化和解决问题 步骤 1: 以管理员权限打开 Windows PowerShell 导航到 C:\Windows\System32\WindowsPowerShell\v1.0 目录。右键点击 powershell.exe 并选择“以管理员身份运行”。执行以下命令&#xff0c;设置执行策略为不受限制&#xff1a;set-executionpolicy -exec…

视频号矩阵管理系统:短视频内容营销的智能助手

随着短视频行业的蓬勃发展&#xff0c;视频号矩阵管理系统应运而生&#xff0c;为内容创作者和品牌提供了一站式的短视频管理和营销解决方案。本文将深入探讨视频号矩阵管理系统的核心功能&#xff0c;以及它如何助力用户在短视频营销领域取得成功。 视频号矩阵管理系统概述 …

Lumerical Algorithm 查找最接近给定透射率值的波长值

Lumerical Algorothm 查找最接近给定透射率值的波长值 引言正文引言 在 Lumerical Script 算法,查找数组中对应值的所有索引值 一文中我们简单介绍了 Lumerical 中的索引值获取算法,这里,我们来介绍一下如何查找最接近给定透射率值的波长值。 正文 比如我们有如下透射率图…

北斗在高铁轨道位移监测中的应用

随着高速铁路的飞速发展&#xff0c;轨道的监测与维护变得至关重要。传统的监测方法已难以满足现代高铁的需求。 近年来&#xff0c;北斗卫星导航系统凭借其高精度、全天候、全球覆盖的优势&#xff0c;在高铁轨道位移监测中发挥了重要作用。 高铁轨道监测系统通过集成北斗卫星…

如何评价Flutter?

哈喽&#xff0c;我是老刘 我们团队使用Flutter已经快6年了。 有很多人问过我们对Flutter的评价。 今天在这里回顾一下6年前选择Flutter时的原因&#xff0c;以及Flutter在这几年中的实际表现如何。 选择Flutter时的判断 1、性能 最开始吸引我们的就是其优秀的性能。 特别是…