Java のマルチスレッドを完全理解する

Javaのマルチスレッドとは、1つのプログラムの中で、複数のスレッドを同時に動かすことで、それぞれのスレッドは異なるタスクを実行します。マルチスレッドにより、プログラムの同時実行性と効率を向上させることができます。

Javaにおけるマルチスレッドの実装には、Threadクラスの継承とRunnableインターフェースの実装という2つの方法があります。

  1. スレッド クラスを継承する
public class MyThread extends Thread {
public void run() {
// 线程执行的代码
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start(); // 启动线程
}
}

上記のコードは、`Thread`クラスを継承したスレッドクラス`MyThread`を作成し、`run`メソッドをオーバーライドすることで、スレッドが実行するコードを定義します。`main`メソッドでは、`MyThread`のオブジェクトを作成し、`start`メソッドを呼び出してスレッドを起動します。

  1. Runnableインターフェースの実装:
public class MyRunnable implements Runnable {
public void run() {
// 线程执行的代码
}
public static void main(String[] args) {
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable); // 创建线程对象,并将Runnable实例传递给Thread的构造方法
thread.start(); // 启动线程
}
}

上のコードでは、Runnableインターフェースを実装したスレッドクラスMyRunnableを作成し、runメソッドを実装することでスレッドで実行されるコードを定義しています。mainメソッドではMyRunnableのオブジェクトを作成し、Threadのコンストラクタに渡してスレッドオブジェクトを作成した後、startメソッドを呼び出してスレッドを開始しています。

无论是继承Thread类还是实现Runnable接口,都需要重写run方法来定义线程要执行的代码。在run方法中可以实现任何需要线程执行的操作。

マルチスレッド環境においてスレッドセーフティ問題が生じることがあります。同期ブロックや同期メソッドを用いてスレッドセーフティ問題を解消できます。

同期化ブロック

public void synchronizedMethod() {
synchronized (this) { // 使用this关键字来锁定当前对象
// 需要同步的代码
}
}

上記のコードは同期ブロックを使ってカレントオブジェクトをロックし、同じ時間に同期ブロックの中のコードを実行できるスレッドが1つであることを保証します。

同期メソッド

public synchronized void synchronizedMethod() {
// 需要同步的代码
}

上記コードは、synchronized キーワードを使用してメソッドを修飾し、同一時点で1つのスレッドのみが該メソッドを実行できるようにしている。

同期ブロックと同期メソッド以外にも、Lockインターフェースを使用してスレッドの同期を実現できます。

Javaでの多スレッド処理に役立つメソッド:

  1. スレッドを開始する
  2. join:等待线程执行完毕
  3. スリープ:現在のスレッドをしばらく休止させる
  4. 実行中のスレッドがCPUの制御を放棄する
  5. 割り込み:スレッドの実行を中断する

多スレッドの基礎概念や実装方法を解説しました。適切に多スレッドを利用することで、プログラムの並列性と効率を向上させることができます。ただし、スレッドセーフの問題にも注意し、必要に応じて適切な同期対策を講じる必要があります。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds