Java 多线程实现并行执行任务

作为一名刚入行的开发者,你可能对多线程的概念和实现方式感到困惑。本文将通过一个简单的实例,教你如何使用Java实现多线程并行执行任务。

流程图

首先,让我们通过一个流程图来了解实现多线程并行执行任务的基本步骤:

flowchart TD
    A[开始] --> B[定义任务]
    B --> C[创建线程]
    C --> D[启动线程]
    D --> E[线程执行]
    E --> F[线程结束]
    F --> G[检查所有线程状态]
    G --> H[所有线程结束]
    H --> I[结束]

步骤详解

1. 定义任务

在Java中,我们通常通过实现Runnable接口或继承Thread类来定义一个任务。这里我们使用Runnable接口:

public class MyTask implements Runnable {
    private int taskId;

    public MyTask(int taskId) {
        this.taskId = taskId;
    }

    @Override
    public void run() {
        System.out.println("Task " + taskId + " is running");
        // 执行任务的代码
    }
}

2. 创建线程

创建线程对象,将任务传递给线程:

MyTask task1 = new MyTask(1);
MyTask task2 = new MyTask(2);

Thread thread1 = new Thread(task1);
Thread thread2 = new Thread(task2);

3. 启动线程

调用线程的start()方法,线程将并行执行:

thread1.start();
thread2.start();

4. 线程执行

run()方法中编写具体的任务逻辑。

5. 线程结束

任务完成后,线程将自动结束。

6. 检查所有线程状态

在主线程中,可以等待所有子线程执行完毕:

try {
    thread1.join();
    thread2.join();
} catch (InterruptedException e) {
    e.printStackTrace();
}

7. 结束

所有线程执行完毕后,主线程结束。

状态图

接下来,我们用状态图来表示线程的生命周期:

stateDiagram
    [*] --> New
    New --> Runnable: start()
    Runnable --> [*]: run()
    Runnable --> Terminated: Task completed
    New --> Terminated: Thread interrupted

完整示例

将上述步骤整合到一个完整的Java程序中:

public class ParallelTasksExample {
    public static void main(String[] args) {
        MyTask task1 = new MyTask(1);
        MyTask task2 = new MyTask(2);

        Thread thread1 = new Thread(task1);
        Thread thread2 = new Thread(task2);

        thread1.start();
        thread2.start();

        try {
            thread1.join();
            thread2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("All tasks completed");
    }
}

class MyTask implements Runnable {
    private int taskId;

    public MyTask(int taskId) {
        this.taskId = taskId;
    }

    @Override
    public void run() {
        System.out.println("Task " + taskId + " is running");
        // 执行任务的代码
    }
}

结语

通过本文,你应该对Java多线程实现并行执行任务有了基本的了解。多线程是提高程序性能的重要手段,但同时也要注意线程安全和资源竞争问题。希望本文能帮助你入门Java多线程编程,为你的编程之路添砖加瓦。