Java Thread 类和Runnable 接口详解

Java Thread 类和 Runnable 接口详解

概述

Java 中的线程是并发编程的核心内容,可以同时执行多个任务。Java 提供了两种线程的方式:继承Thread类和实现Runnable接口。

Thread 类

Thread类是Java中的一个顶级类,使用它可以快速地创建并发程序。Java 程序中的 main() 方法也是一个线程,使用Thread类的实例对象就可以创建新的线程。

Runnable 接口

Runnable 接口在 Java 中的作用是为其它类提供一个可执行的任务,这个任务可以被线程执行。实现 Runnable 接口可以使用相同的代码作为 Java 程序的线程执行主体,但此时我们将使用 Runnable 的实例对象作为 callable 对象。

使用 Thread 类创建线程

使用 Thread 类创建线程非常简单,只需要继承 Thread 类并覆盖其中的 run() 方法,即可创建一个新的线程。重写 run() 方法的代码将在新的线程中执行。下面的示例展示如何使用 Thread 类创建线程:

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Hello World!");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}

运行上述代码将会在控制台输出"Hello World!"。

使用 Runnable 接口创建线程

使用 Runnable 接口创建线程需要实现 run() 方法,并将这个实现代码放在 main() 方法中以供线程执行。下面的示例展示如何使用 Runnable 接口创建线程:

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Hello World!");
    }
}

public class Main {
    public static void main(String[] args) {
        MyRunnable runnable = new MyRunnable();
        Thread thread = new Thread(runnable);
        thread.start();
    }
}

运行上述代码将会在控制台输出"Hello World!"。

线程方法

Java Thread 类提供了许多有用的方法来控制线程的行为,其中一些方法包括:

  • start():启动线程。
  • join():等待线程结束。
  • wait():暂停当前线程。
  • notify():唤醒暂停的线程。

有关这些方法的更多详细信息,请参见Java文档。

范例

下面是一个更具体的示例,它演示了如何使用 Thread 类和 Runnable 接口创建并发程序:

public class PrintLetters implements Runnable {
    private final int count;
    private final char letter;

    public PrintLetters(int count, char letter) {
        this.count = count;
        this.letter = letter;
    }

    @Override
    public void run() {
        for (int i = 0; i < count; i++) {
            System.out.print(letter + " ");
        }
    }

    public static void main(String[] args) {
        Thread thread1 = new Thread(new PrintLetters(10, 'A'));
        Thread thread2 = new Thread(new PrintLetters(10, 'B'));
        thread1.start();
        thread2.start();
    }
}

运行上述代码将会在控制台输出"A A A A A A A A A A B B B B B B B B B B"。

总结

Java 提供了两种创建线程的方式,继承 Thread 类并覆盖其中的 run() 方法或实现 Runnable 接口并在 run() 方法中提供可执行的任务。Thread 类和 Runnable 接口都有其各自的优点和缺点。

如果一个类除了使用一个线程来执行它的任务外没有其它的目的,那么使用 Thread 类是很合适的。Runnable 接口更通用,因为它允许类实现一个接口,同时可以扩展另一个类,这是 Java 中的易用性至上的哲学的一个示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Thread 类和Runnable 接口详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java中mybatis的三种分页方式

    Java中mybatis的分页方式有以下3种: 使用MySQL的Limit语句进行分页: 在Mapper接口中定义方法 public List<User> findByPage(@Param("startIndex") int startIndex, @Param("pageSize") int pageS…

    Java 2023年5月20日
    00
  • Spring Boot 应用的热部署配置方法

    Spring Boot应用的热部署配置方法 在开发Spring Boot应用程序时,我们需要频繁地修改代码并重新编译,这会浪费很多时间。为了提高开发效率,我们可以使用热部署来避免频繁的重启应用程序。本文将详细讲解如何在Spring Boot应用程序中配置热部署。 步骤一:添加依赖 我们需要在pom.xml文件中添加Spring Boot DevTools的依…

    Java 2023年5月15日
    00
  • 转载一个别人收藏的精典网站Ruby,HIBERNATE相关

    关于“转载一个别人收藏的精典网站Ruby,HIBERNATE相关”的完整攻略,我会按照以下步骤进行详细讲解: 1. 确定转载目的 在转载一篇文章之前,我们需要明确自己的转载目的。是为了丰富自己的博客内容,还是为了分享给更多人?这一点很重要,因为它将决定你应该如何进行转载。 2. 征求原作者许可 在转载别人的文章之前,最重要的是要获得原作者的授权,否则可能会引…

    Java 2023年5月20日
    00
  • java RSAUtils 加密工具类操作

    下面我来详细讲解一下“java RSAUtils 加密工具类操作”的完整攻略。 1. 什么是RSA加密 RSA加密是目前最为常用的非对称加密算法,由Ron Rivest、Adi Shamir 和Leonard Adleman 三人于1977年在MIT公布的,所以以他们三人的名字的头字母命名。 2. RSA加密的原理 RSA加密的原理很简单,就是通过生成一对公…

    Java 2023年5月20日
    00
  • Java8新特性Optional类及新时间日期API示例详解

    Java8新特性Optional类及新时间日期API示例详解 Java8引入了新的特性Optional类和新的时间日期API,本文将从简介、Optional类、新时间日期API两个方面详细讲解这些新特性,并通过两条示例来进一步说明。 简介 Java8新特性是对Java语言本身的更新,涉及到Java SE库的更新,这意味着我们能够在开发程序时更轻松地编写可读性…

    Java 2023年5月20日
    00
  • 什么是线程安全的队列?

    以下是关于线程安全的队列的完整使用攻略: 什么是线程安全的队列? 线程安全的队列是指在线程环境下,多个线程同时访问队列中的元素而不会出现数据不一致程序崩溃等问题。在线程编程中,线程安全的队列是非常重要的,因为多个线程同时访问队列,会出现线程争用的问题,导致数据不一致或程序崩溃。 如何实现线程安全的队列? 为实现线程全的队列,需要使用同步机制来保证多个线程对队…

    Java 2023年5月12日
    00
  • spring mvc中直接注入的HttpServletRequst安全吗

    Spring MVC中直接注入的HttpServletRequest安全吗? 在Spring MVC中,我们可以直接在控制器方法中注入HttpServletRequest对象,以便在方法中访问请求信息。但是,这种做法是否安全呢?本文将对此进行详细讲解,并提供两个示例说明。 直接注入HttpServletRequest的安全问题 直接注入HttpServlet…

    Java 2023年5月17日
    00
  • 解决Tomcat启动报异常java.lang.ClassNotFoundException问题

    下面是解决Tomcat启动报异常java.lang.ClassNotFoundException问题的完整攻略。 问题背景 在使用Tomcat启动项目时,有时候会出现java.lang.ClassNotFoundException异常,这是因为Tomcat无法找到相关的类文件。在这种情况下,需要进一步排查问题并解决它。 解决方法 1. 检查类路径 首先,需要…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部