Java Thread 类和Runnable 接口详解

 更新时间:2022年08月10日 15:47:18   作者:姚青&  
这篇文章主要介绍了Java Thread 类和Runnable接口详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

一、Thread 类

了解如何使用Thread 类实现多线程之后,继续学习Thread 类实现多线程之后的相关功能及方法。

1、操作线程名称的方法

构造方法(实现 Runnable 接口时候使用)

  • public Thread(Runnable target,String name); 创建线程时设置线程名称。

成员方法:

  • public final void setName(String name); 设置线程的名称。
  • public final String getName(); 获取线程的名称。

Demo 代码示例:

public class TestThread extends Thread{

@Override
public void run() {
    for (int i = 1; i <= 10; i++) {
        System.out.println("我正在编写多线程代码"+ i);
    }
}

//程序主线程 main 线程
public static void main(String[] args) {

    //创建子类对象
    TestThread thread = new TestThread();

    // 设置线程名称
    thread.setName("姚青新创建的线程");

    //调用 start() 方法开启线程
    thread.start();

    for (int i = 1; i <= 10; i++) {
        System.out.println("我正在学习多线程"+ i);
    }

	// 获取线程名称
    System.out.println(thread.getName());
   }
}

运行结果:

2、获取当前正在执行的线程

public static Thread currentThread(); 返回当前正在执行的线程对象

获取当前线程对象:Thread.currentThread(); 

获取当前线程对象名称 :Thread.currentThread().getName();

Demo代码示例:

public class TestThread extends Thread{

@Override
public void run() {
    for (int i = 1; i <= 5; i++) {
        System.out.println("我正在编写多线程代码"+ i);
    }

    // 获取start()方法创建出来的线程对象
    System.out.println(Thread.currentThread());

    // 获取start()方法创建出来的线程对象名称
    System.out.println(Thread.currentThread().getName());
}

public static void main(String[] args) {
    TestThread thread = new TestThread();
    thread.setName("姚青新创建的线程");
    thread.start();
    for (int i = 1; i <= 5; i++) {
        System.out.println("我正在学习多线程"+ i);
    }
    //System.out.println(thread.getName());

    // 获取main()主线程对象名称
    System.out.println(Thread.currentThread().getName());
  }
}

运行结果:

通过运行结果可以发现,在控制台上分别打印出了 “main”、“Thread[姚青新创建的线程,5,main]”、“姚青新创建的线程”,可以看出将新创建的线程对象和对象名称以及主方法的线程名称都打印出来了。
在使用这个方法的时候需要注意一点,该方法固定的写法就是 Thread.currentThread(); 放在那个线程中执行这个方法就是指定的那个线程。

相关文章

  • Sharding-Proxy分库分表和数据加密使用场景分析

    Sharding-Proxy分库分表和数据加密使用场景分析

    这篇文章主要介绍了Sharding-Proxy分库分表和数据加密使用经验分享,通过场景模拟分析结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Java 十大排序算法之插入排序刨析

    Java 十大排序算法之插入排序刨析

    插入排序(InsertionSort),一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增 1 的有序表
    2021-11-11
  • spring基础概念AOP与动态代理理解

    spring基础概念AOP与动态代理理解

    这篇文章主要为大家详细介绍了spring基础概念AOP与动态代理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 解决Java包装类比较时遇到的问题

    解决Java包装类比较时遇到的问题

    所谓包装类的作用就是将原始数据类型转换成引用数据类型,下面这篇文章主要给大家介绍了关于在Java包装类比较时遇到的问题的解决方法,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • 使用Spark SQL实现读取不带表头的txt文件

    使用Spark SQL实现读取不带表头的txt文件

    这篇文章主要为大家详细介绍了如何使用Spark SQL实现读取不带表头的txt文件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • Java并发之Condition案例详解

    Java并发之Condition案例详解

    这篇文章主要介绍了Java并发之Condition案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Maven入门之使用Nexus搭建Maven私服及上传下载jar包

    Maven入门之使用Nexus搭建Maven私服及上传下载jar包

    这篇文章主要介绍了Maven入门之使用Nexus搭建Maven私服及上传下载jar包,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 非常全面的IReport的使用教程

    非常全面的IReport的使用教程

    iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。本教程给大家详细介绍IReport的使用解析,感兴趣的朋友一起看看吧
    2021-10-10
  • 基于maven install 没反应的解决方法

    基于maven install 没反应的解决方法

    下面小编就为大家带来一篇基于maven install 没反应的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • SpringBoot 整合数据源的具体实践

    SpringBoot 整合数据源的具体实践

    本文主要介绍了SpringBoot 整合数据源的具体实践,利用 Spring Boot 的自动配置和简化的注解来简化数据源配置工作,从而更专注于应用程序的业务逻辑开发,感兴趣的可以了解一下
    2023-11-11

最新评论