《Java多线程编程核心技术》——1.3节currentThread()方法

简介:

本节书摘来自华章社区《Java多线程编程核心技术》一书中的第1章,第1.3节currentThread()方法,作者高洪岩,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.3 currentThread()方法
currentThread()方法可返回代码段正在被哪个线程调用的信息。下面通过一个示例进行说明。
创建t6项目,创建Run1.java类代码如下:

public class Run1 {
    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName());
    }
}

程序运行结果如图1-21所示。


620669010235b214ceb744238c74bfb651c393b2

结果说明,main方法被名为main的线程调用。
继续实验,创建MyThread.java类。代码如下:

public class MyThread extends Thread {
    public MyThread() {
        System.out.println("构造方法的打印:" + Thread.currentThread().getName());
    }
    @Override
    public void run() {
        System.out.println("run方法的打印:" + Thread.currentThread().getName());
    }
}
运行类Run2.java代码如下:
public class Run2 {
    public static void main(String[] args) {
        MyThread mythread = new MyThread();
        mythread.start();
        // mythread.run();
    }
}
程序运行结果如图1-22所示。
从图1-22中的运行结果可以发现,MyThread.java类的构造函数是被main线程调用的,而run方法是被名称为Thread-0的线程调用的,run方法是自动调用的方法。
文件Run2.java代码更改如下:
public class Run2 {
    public static void main(String[] args) {
        MyThread mythread = new MyThread();
        // mythread.start();
        mythread.run();
    }
}

运行结果如图1-23所示。


3d548437615c3aad27218d775c3e3e30ecfb15bf

再来测试一个比较复杂的情况,创建测试用的项目currentThreadExt,创建Java文件CountOperate.java。代码如下:

package mythread;
public class CountOperate extends Thread {
    public CountOperate() {
        System.out.println("CountOperate---begin");
        System.out.println("Thread.currentThread().getName()="
                + Thread.currentThread().getName());
        System.out.println("this.getName()=" + this.getName());
        System.out.println("CountOperate---end");
    }
    @Override
    public void run() {
        System.out.println("run---begin");
        System.out.println("Thread.currentThread().getName()="
                + Thread.currentThread().getName());
        System.out.println("this.getName()=" + this.getName());
        System.out.println("run---end");
    }
}
创建Run.java文件,代码如下:
package test;
import mythread.CountOperate;
public class Run {
    public static void main(String[] args) {
        CountOperate c = new CountOperate();
        Thread t1 = new Thread(c);
        t1.setName("A");
        t1.start();
    }
}
程序运行结果如下:
CountOperate---begin
Thread.currentThread().getName()=main
this.getName()=Thread-0
CountOperate---end
run---begin
Thread.currentThread().getName()=A
this.getName()=Thread-0
run---end
相关文章
|
14天前
|
NoSQL Java 数据库连接
深入探索 Java 后台开发的核心技术
【4月更文挑战第5天】本文探讨了Java后台开发的关键技术,包括Spring框架与Spring Boot的使用,MyBatis和Hibernate的ORM选择,关系型与NoSQL数据库的适用场景,线程池与异步处理在并发中的作用,微服务架构及RESTful API设计。这些核心技术有助于开发者打造稳定、高性能的Java后台系统,适应不断发展的云计算和人工智能需求。
|
23天前
|
Java
Java中的多线程编程技巧与最佳实践
在当今软件开发领域,多线程编程已经成为不可或缺的一部分。本文将深入探讨Java中的多线程编程技巧与最佳实践,帮助开发人员更好地利用多线程提高程序性能和并发处理能力。
|
29天前
|
安全 Java 调度
Java中的多线程编程:从理论到实践
【2月更文挑战第30天】本文旨在深入探讨Java中的多线程编程。我们将从基础的理论出发,理解多线程的概念和重要性,然后通过实际的Java代码示例,展示如何创建和管理线程,以及如何处理线程间的同步和通信问题。最后,我们还将讨论Java并发库中的一些高级特性,如Executor框架和Future接口。无论你是Java初学者,还是有经验的开发者,本文都将为你提供有价值的见解和实用的技巧。
|
14天前
|
Java 程序员 调度
Java中的多线程编程:基础知识与实践
【4月更文挑战第5天】 在现代软件开发中,多线程编程是一个不可或缺的技术要素。它允许程序员编写能够并行处理多个任务的程序,从而充分利用多核处理器的计算能力,提高应用程序的性能。Java作为一种广泛使用的编程语言,提供了丰富的多线程编程支持。本文将介绍Java多线程编程的基础知识,并通过实例演示如何创建和管理线程,以及如何解决多线程环境中的常见问题。
|
10天前
|
算法 Java 开发者
Java中的多线程编程:概念、实现与性能优化
【4月更文挑战第9天】在Java编程中,多线程是一种强大的工具,它允许开发者创建并发执行的程序,提高系统的响应性和吞吐量。本文将深入探讨Java多线程的核心概念,包括线程的生命周期、线程同步机制以及线程池的使用。接着,我们将展示如何通过继承Thread类和实现Runnable接口来创建线程,并讨论各自的优缺点。此外,文章还将介绍高级主题,如死锁的预防、避免和检测,以及如何使用并发集合和原子变量来提高多线程程序的性能和安全性。最后,我们将提供一些实用的性能优化技巧,帮助开发者编写出更高效、更稳定的多线程应用程序。
|
9天前
|
Java
Java中ReentrantLock中tryLock()方法加锁分析
Java中ReentrantLock中tryLock()方法加锁分析
11 0
|
29天前
|
Java
java中日期处理的一些工具方法
java中日期处理的一些工具方法
17 1
|
1天前
|
Java
Java接口中可以定义哪些方法?
【4月更文挑战第13天】
4 0
Java接口中可以定义哪些方法?
|
7天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
10 0
|
8天前
|
Java 调度
Java中的多线程编程:从理论到实践
【4月更文挑战第11天】在现代软件开发中,多线程编程是一个重要的概念。它允许多个线程同时运行,从而提高了程序的执行效率和响应速度。本文将深入探讨Java中的多线程编程,包括基本概念、实现方法以及实际应用案例。我们将从理论出发,然后通过实例来加深理解,最后讨论多线程编程的优势和挑战。