Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java线程创建的三种方式


在 Java 中,有三种常用的方式来创建线程:继承 Thread 类、实现 Runnable 接口以及使用 Callable 和 Future。下面我会为你详细介绍每种方式的步骤流程,并附上示例代码和可能的依赖坐标。

继承 Thread 类

步骤流程:

  1. 创建一个继承自 Thread 类的子类,并重写 run() 方法,在 run() 方法中定义线程的任务逻辑。
  2. 实例化子类对象,调用 start() 方法启动线程。

示例代码:

public class MyThread extends Thread {
    @Override
    public void run() {
        // 线程的任务逻辑
        System.out.println("Thread is running.");
    }

    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start(); // 启动线程
    }
}

实现 Runnable 接口

步骤流程:

  1. 创建一个实现了 Runnable 接口的类,实现 run() 方法。
  2. 实例化 Runnable 实现类的对象。
  3. Runnable 实现类的对象作为参数创建 Thread 对象。
  4. 调用 start() 方法启动线程。

示例代码:

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 线程的任务逻辑
        System.out.println("Runnable is running.");
    }

    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        Thread thread = new Thread(myRunnable);
        thread.start(); // 启动线程
    }
}

使用 Callable 和 Future

步骤流程:

  1. 创建一个实现 Callable 接口的类,实现 call() 方法,该方法有返回值。
  2. 创建 ExecutorService 线程池对象来管理线程。
  3. 提交 Callable 实现类的对象给线程池,获得 Future 对象。
  4. 调用 Future 对象的 get() 方法获取线程执行的结果。

示例代码:

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class MyCallable implements Callable<String> {
    @Override
    public String call() throws Exception {
        // 线程的任务逻辑
        return "Callable result";
    }

    public static void main(String[] args) throws Exception {
        MyCallable myCallable = new MyCallable();
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Future<String> future = executorService.submit(myCallable);

        String result = future.get(); // 获取线程执行结果
        System.out.println(result);

        executorService.shutdown();
    }
}

Maven 和 Gradle 依赖坐标

如果你需要使用 Java 的线程和并发库,通常不需要特别的依赖,因为 Java 标准库已经包含了这些类。所以在 Maven 和 Gradle 中不需要额外的依赖坐标。

但如果你要使用一些其他的库来辅助线程编程,例如 Guava、Apache Commons 等,你可以根据需要添加相应的依赖坐标。具体的依赖坐标可以前往 Maven 中央仓库搜索获取。

请注意,上述示例中的代码是基于 Java 标准库进行的,并不需要额外的依赖。

下面我将详细介绍三种常见的初始化数组的方式,包括初始化值、通过数组长度创建和使用Arrays类。无论使用哪种方式,最终结果都是创建一个已经初 ...
在Java中,解析XML文件的三种主要方式是DOM(DocumentObjectModel),SAX(SimpleAPIforXML),以及 ...
下面是三种将JavaList集合转换为HashMap对象的方法,每种方法都附带了详细的注释。###方法二:使用迭代器遍历List使用迭代器遍 ...
###方法1:使用append()方法这是向列表末尾添加元素最简单的方法,不需要额外的库。示例代码:###方法3:使用extend()方法或 ...
创建一个Django项目的过程主要包括安装python环境、安装对应Django版本以及命令创建Django项目等后续操作。2版本:创建Dj ...