Java多线程 -Thread类的常用API

这篇具有很好参考价值的文章主要介绍了Java多线程 -Thread类的常用API。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

线程常用API

Thread常用API说明:

Thread常用方法:获取线程名称getName()、设置名称setName()、获取当前线程对象currentThread()。

至于Thread类提供的诸如:yield、join、interrupt、不推荐的方法 stop 、守护线程、线程优先级等线程的控制方法,在开发中很少使用,这些方法会在高级篇以及后续需要用到的时候再为大家讲解。

思考: 当有很多线程在执行的时候, 我们怎么去区分这些线程呢?

例如下面代码, 我们创建了两个子线程, 但是两个子线程的打印内容是一样的, 这就导致于我们无法区分两个子线程

public class ThreadDemo {
    public static void main(String[] args) {
        // 创建第一个子线程
        Thread t1 = new MyThread();
        t1.start();

        // 创建第二个子线程
        Thread t2 = new MyThread();
        t2.start();
    }
}

// 创建线程对象
class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("子线程输出: " + i);
        }
    }
}

此时需要使用Thread的常用方法:getName()、setName()、currentThread()等。

Thread设置和获取线程名称API:

方法名称 说明
getName() 获取当前线程的名称,默认线程名称是Thread-索引
setName(String name) 将此线程的名称更改为指定的名称,通过构造器也可以设置线程名称

Thread类获取当前线程对象的API(可以通过这个API获取主线程对象):

此方法是Thread类的静态方法,可以直接使用Thread类调用。

这个方法是在哪个线程执行中调用的,就会得到哪个线程对象。

方法名称 说明
static Thread currentThread() 返回对当前正在执行的线程对象的引用

演示代码:

public class ThreadDemo {
    public static void main(String[] args) {
        Thread t1 = new MyThread();
        // 获取子线程默认名称
        System.out.println(t1.getName()); // Thread-0
        // 设置线程名称
        t1.setName("1号线程");
        t1.start();

        Thread t2 = new MyThread();
        // 获取子线程默认名称
        System.out.println(t2.getName()); // Thread-1
        // 设置线程名称
        t2.setName("2号线程");
        t2.start();

        // 获取当前线程对象(在这里也就是主线程)
        Thread m = Thread.currentThread();
        // 获取主线程默认名称
        System.out.println(m.getName());
    }
}

// 创建线程对象
class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            // 拿到线程的名称用于区分
            System.out.println(Thread.currentThread().getName() + "输出: " + i);
        }
    }
}

打印结果如下, 此时我们就可以区分多个子线程

Thread-0
Thread-1
main
1号线程输出: 0
1号线程输出: 1
1号线程输出: 2
2号线程输出: 0
1号线程输出: 3
1号线程输出: 4
2号线程输出: 1
2号线程输出: 2
2号线程输出: 3
2号线程输出: 4

Thread构造器是可以为线程取名字的:

我们可以在子类MyThread中调用父类Thread构造器, 就可以在创建对象时为线程设置名称, 不需要单独调用setName方法

方法名称 说明
Thread(String name) 可以为当前线程指定名称
Thread(Runnable target) 封装Runnable对象成为线程对象
Thread(Runnable target ,String name ) 封装Runnable对象成为线程对象,并指定线程名称
public class ThreadDemo {
    public static void main(String[] args) {
        // 创建线程时使用构造器设置名称
        Thread t1 = new MyThread("1号线程");
        t1.start();
        Thread t2 = new MyThread("2号线程");
        t2.start();
    }
}

// 创建线程对象
class MyThread extends Thread {
    public MyThread() {
    }

    // 调用父类构造器
    public MyThread(String name) {
        super(name);
    }

    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            // 拿到线程的名称用于区分
            System.out.println(Thread.currentThread().getName() + "输出: " + i);
        }
    }
}

Thread类线程的休眠方法

方法名称 说明
static void sleep(long time) 让当前线程休眠指定的时间后再继续执行,单位为毫秒。

例如我们用主线程来演示, 当for循环中i=3时, 让主线程休眠三秒后, 再运行文章来源地址https://www.toymoban.com/news/detail-834362.html

public static void main(String[] args) throws Exception {
    for (int i = 0; i < 10; i++) {
        System.out.println(i);
        if (i == 3) {
            Thread.sleep(3000);
        }
    }
}

到了这里,关于Java多线程 -Thread类的常用API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA深化篇_29—— 线程使用之线程联合以及Thread类中的其他常用方法【附有详细说明及代码案例】

    线程联合 当前线程邀请调用方法的线程优先执行,在调用方法的线程执行结束之前,当前线程不能再次执行。线程A在运行期间,可以调用线程B的join()方法,让线程B和线程A联合。这样,线程A就必须等待线程B执行完毕后,才能继续执行。 join方法的使用 join()方法就是指调用该

    2024年02月05日
    浏览(48)
  • 进阶JAVA篇- LocalDate 类与 LocalTime 类、LocalDateTime 类的常用API(六)

    目录 API                      1.0 LocalDate 类与 LocalTime 类、LocalDateTime 类的API说明         1.1 如何 创建 LocalDate 类与 LocalTime 类、LocalDateTime 类的对象         1.2 LocalDate 类与 LocalTime 类、LocalDateTime 类中的以  get 开头实例方法         1.3 LocalDateTime 类中的 toL

    2024年02月08日
    浏览(45)
  • 进阶JAVA篇- Collection 类的常用的API与 Collection 集合的遍历方式

    目录         1.0 Collection 类的说明         1.1 Collection 类中的实例方法         2.0 Collection 集合的遍历方式(重点)         2.1 使用迭代器( Iterator )进行遍历         2.2 使用增强型 for 循环进行遍历         2.3 使用 Java 8的 Stream API 进行遍历(使用 Lambda 表达式进

    2024年02月08日
    浏览(47)
  • 【JavaSE API 】生成随机数的2种方法:Random类和Math类的Random方法

    Random类和Math类的random方法都可以用来生成随机数 而Math类的random方法则是 基于系统时间 的伪随机数生成器,= 0.0 , 1.0的随机double值范围[0,1)。例如: double num1 = Math.random() * 5 + 4;//范围[4,9) Random类是 基于种子 的伪随机数生成器,有含参数和不含参数两种构造方式,不含参数的

    2024年02月07日
    浏览(56)
  • 【多线程】认识Thread类及其常用方法

    📄 前言 : 本文是对以往多线程学习中 Thread类 的介绍,以及对其中的部分细节问题进行总结。 之前的文章介绍过线程的引入能够更好地处理程序的并发执行问题。在Java中,线程的创建方式之一是通过 Thead类 (Thead封装了操作系统提供的API,使我们创建的线程能够系统的调

    2024年01月18日
    浏览(38)
  • 【JavaEE】_多线程Thread类及其常用方法

    目录 1. Thread类常用构造方法 2. Thread类的几个常见属性 3. 启动一个线程 4. 中断一个线程 4.1 方法1:手动设置标志位 4.2 方法2:使用Thread内置的标志位 5. 等待一个线程 6. 获取当前线程引用 7. 休眠当前线程 方法 说明 Thread() 创建线程对象 Thread(Runnable target) 使用Runnable对象创建

    2024年02月20日
    浏览(38)
  • 并发编程Thread的常用API有哪些?

    在JDK17(或以上版本)中, Thread 类提供了一组常用的API,用于管理线程的创建、启动、暂停、恢复和销毁等操作。本文从api、源码、编程示例等方面详细说明Thread常用函数的使用和注意事项。 使当前正在执行的线程暂停(挂起)指定的毫秒数。但受系统计时器和调度程序的

    2024年03月09日
    浏览(31)
  • 【JavaSE】Java基础语法(三十四):实现多线程

    是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 并行:在同一时刻,有多个指令在多个CPU上同时执行。 并发:在同一时刻,有多个指令在单个CPU上交替执行。 进程:是正在运行的程序

    2024年02月08日
    浏览(44)
  • Java 线程池(Thread Pools)详解

    目录 1、线程池介绍 2、线程池执行原理 3、线程池中的阻塞队列 4、Java 线程池中的拒绝策略 5、Java 提供的创建线程池的方式 6、线程池的使用示例 7、ForkJoinPool 和 ThreadPool 的区别 1、线程池介绍          线程池是一种重用线程的机制 ,用于提高线程的利用率和管理线程的

    2024年02月05日
    浏览(40)
  • 【JavaEE】Java中的多线程 (Thread类)

    作者主页: paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《MySQL》《

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包