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(); 放在那个线程中执行这个方法就是指定的那个线程。

相关文章

  • 基于Java代码实现支付充值的通用流程

    基于Java代码实现支付充值的通用流程

    本文给大家分享一段java核心代码实现支付充值的通用流程,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-05-05
  • Springboot接口参数校验的方法

    Springboot接口参数校验的方法

    在设计接口时我们通常需要对接口中的非法参数做校验,以降低在程序运行时因为一些非法参数而导致程序发生异常的风险,这篇文章给大家介绍Springboot接口参数校验的方法,感兴趣的朋友一起看看吧
    2024-03-03
  • IDEA 2020.3.X 创建scala环境的详细教程

    IDEA 2020.3.X 创建scala环境的详细教程

    这篇文章主要介绍了IDEA 2020.3.X 创建scala环境的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Springboot采用jasypt加密配置的项目实践

    Springboot采用jasypt加密配置的项目实践

    本文主要介绍了在Spring Boot项目中使用Jasypt对配置文件中的敏感信息进行加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • maven将项目打包上传到nexus私服的详细教程

    maven将项目打包上传到nexus私服的详细教程

    这篇文章主要介绍了maven将项目打包上传到nexus私服,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-07-07
  • Java web spring异步方法实现步骤解析

    Java web spring异步方法实现步骤解析

    这篇文章主要介绍了Java web spring异步方法实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java实现HashMap排序方法的示例详解

    Java实现HashMap排序方法的示例详解

    这篇文章主要通过一些示例为大家介绍了Java对HashMap进行排序的方法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解一下
    2022-05-05
  • Java常用的时间类以及其转化方式

    Java常用的时间类以及其转化方式

    这篇文章主要介绍了Java常用的时间类以及其转化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java EasyExcel导入带图片的完整过程记录

    Java EasyExcel导入带图片的完整过程记录

    这篇文章主要介绍了关于结合EasyExcel和ApachePOI来实现Excel数据批量导入并读取图片的过程,文中通过图文以及代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • Java日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】

    Java日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】

    这篇文章主要介绍了Java日期操作方法工具类,结合完整实例形式分析了java针对日期的各种常见操作,包括日期比较大小,相加减,判断,验证,获取年份、天数、星期等,需要的朋友可以参考下
    2017-11-11

最新评论