Java でマルチスレッド並列処理を行う方法
Javaでマルチスレッドの実行方法は、スレッドクラスを継承するかRunnableインターフェースを実装かの2通りがある。
- 继承Thread类:
- スレッドクラスを継承するクラスを定義し、run()メソッドをオーバーライドして、run()メソッド内にスレッド実行のロジックを記述
- スレッドオブジェクトを作成し、start()メソッドを実行してスレッドを開始します。
- まあ、ちょっとね
- public class MyThread extends Thread {
@Override
public void run() {
// スレッド実行のロジック
}
}public class Main {
public static void main(String[] args) {
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();
}
} - Runnableインターフェースを実装する:
- Runnableインターフェイスを実装したクラスを定義し、run()メソッドをオーバーライドして、スレッドの実行ロジックを記述する。
- runnable インタフェースを実装したオブジェクトを Thread クラスのコンストラクタに引数として渡してスレッドオブジェクトを作り、start() メソッドを呼び出してスレッドを開始する。
- この文を日本語で言い換えてください。選択肢は1つだけでかまいません。例:
- public class MyRunnable implements Runnable {
@Override
public void run() {
// スレッド実行ロジック
}
}public class Main {
public static void main(String[] args) {
MyRunnable runnable1 = new MyRunnable();
MyRunnable runnable2 = new MyRunnable();
Thread thread1 = new Thread(runnable1);
Thread thread2 = new Thread(runnable2);
thread1.start();
thread2.start();
}
}
多スレッド並列実行を実現する方法は2つありますが、Runnableインターフェースを実装する方法が一般的ようです。なぜなら、Javaは単一継承しかサポートしておらず、他のクラスを継承済みの場合はThreadクラスを継承できなくなるためです。一方、Runnableインターフェースを実装すればこの問題はありません。また、Runnableインターフェースを使用することで、複数スレッドがRunnableオブジェクトのリソースを共有できるため、より柔軟なスレッド操作が実現できます。