Javaでのマルチスレッドの実装方法は何ですか?

Javaでマルチスレッドを実装する方法はいくつかあります。

  1. Threadクラスをサブクラス化する:Threadクラスを継承したサブクラスを作成し、run()メソッドをオーバーライドして、スレッドの実行ロジックを定義します。
public class MyThread extends Thread {
    public void run() {
        // 线程的执行逻辑
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start(); // 启动线程
    }
}
  1. Runnableインターフェースを実装する:Runnableインターフェースを実装したクラスを作成し、run()メソッドを実装し、その中でスレッドの実行ロジックを定義します。
public class MyRunnable implements Runnable {
    public void run() {
        // 线程的执行逻辑
    }
}

public class Main {
    public static void main(String[] args) {
        MyRunnable runnable = new MyRunnable();
        Thread thread = new Thread(runnable);
        thread.start(); // 启动线程
    }
}
  1. CallableとFutureを使用する:Callableインタフェースを実装したクラスを作成し、call()メソッドを実装し、call()メソッド内でスレッドの実行ロジックを定義します。ExecutorServiceのsubmit()メソッドを使用してCallableタスクを送信し、Futureオブジェクトを使用してタスクの戻り値を取得します。
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<Integer> {
    public Integer call() {
        // 线程的执行逻辑,返回一个结果
        return 1;
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        MyCallable callable = new MyCallable();
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Future<Integer> future = executorService.submit(callable);
        int result = future.get(); // 获取任务的返回结果
        System.out.println(result);
        executorService.shutdown();
    }
}
  1. スレッドプールを使用する:スレッドプールを作成し、submit()メソッドを使用してランナブルやコーラブルなタスクを提出すると、スレッドプールが自動的にスレッドを割り当ててタスクを実行します。
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MyRunnable implements Runnable {
    public void run() {
        // 线程的执行逻辑
    }
}

public class Main {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(10); // 创建一个固定大小的线程池
        executorService.execute(new MyRunnable()); // 提交任务
        executorService.shutdown(); // 关闭线程池
    }
}
bannerAds