📜  Java多线程-执行多个线程任务(1)

📅  最后修改于: 2023-12-03 15:32:02.904000             🧑  作者: Mango

Java多线程-执行多个线程任务

多线程是Java编程重要的特性之一,允许程序在并发执行多个任务。在本文中,我们将介绍如何在Java中执行多个线程任务。

创建线程

在Java中,有两种创建线程的方法:Thread 类和 Runnable 接口。Thread 类是 Runnable 接口的实现,并且允许我们使用 start() 方法来启动一个线程。

使用 Thread 类创建线程
class MyThread extends Thread {
    public void run() {
        System.out.println("MyThread running...");
    }
}

我们可以通过创建 MyThread 类的实例来启动线程。

MyThread thread = new MyThread();
thread.start(); // 启动线程
使用 Runnable 接口创建线程
class MyRunnable implements Runnable {
    public void run() {
        System.out.println("MyRunnable running...");
    }
}

我们需要先创建 MyRunnable 类的实例,然后将其传递给 Thread 类的构造函数来创建一个线程。

MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start(); // 启动线程
执行多个线程任务

我们可以通过为每个任务创建一个线程来执行多个线程任务。但是,这种方法存在一些问题:

  • 线程数目可能过多,这会导致系统资源的浪费。
  • 对于大量任务,线程创建的时间可能比任务执行的时间更长。

为了解决这些问题,我们可以使用线程池来执行多个线程任务。

使用 Executors 创建线程池

Java提供了 Executors 类来创建线程池。Executors 类有以下静态方法可用于创建线程池:

  • newFixedThreadPool(int n) 创建具有固定线程数量的线程池。
  • newCachedThreadPool() 创建可自动调整线程数量的线程池。
  • newSingleThreadExecutor() 创建只有一个线程的线程池。

下面是示例代码,展示了如何使用 newFixedThreadPool() 方法创建固定数量的线程池。

ExecutorService executor = Executors.newFixedThreadPool(4);

这将创建一个具有 4 个线程的线程池。现在我们可以通过将任务传递给线程池来执行任务。

for (int i = 0; i < 10; i++) {
    executor.submit(new MyRunnable());
}
总结

在本文中,我们介绍了如何在Java中创建和执行多个线程任务。我们可以使用 Thread 类和 Runnable 接口创建线程,并使用 Executors 类来创建线程池。线程池允许我们执行多个线程任务,并避免了创建过多线程的问题。