Javaマルチスレッドを実装する方法

angryTom
リリース: 2019-11-11 13:55:32
オリジナル
3581 人が閲覧しました

Javaマルチスレッドを実装する方法

Java マルチスレッドの実装方法

Java マルチスレッドは、Java の高度な機能の 1 つです。マルチスレッドを使用すると、マルチタスクと共同作業を同時に実現でき、特定の状況下ではプログラムの効率が向上します。ただし、Java マルチスレッドの使用には注意が必要です。高度なコーディング スキル 不適切に使用すると、プログラム エラーやスレッドが発生し、デッドロックに対する悪意のある競合によりプログラムがフリーズします。 2 つ目は、マルチスレッドを乱用すると、一部の主要なパラメータが乱れることがあるため、スレッド間の同期とロック管理を行う必要があります。第三に、スレッド切り替えには追加のコストが必要であり、これは「コンテキスト切り替え」と呼ばれることが多く、不適切に使用すると、効率が向上しないだけでなく、効率の大幅な低下を引き起こす可能性があります。 (推奨チュートリアル: java チュートリアル)

1. Thread を継承してマルチスレッドを実装する

Java は、拡張するためのスーパークラス Thread を提供します。継承したら、run メソッドをオーバーライドすることでマルチスレッドを実装できます。具体的なコードは次のとおりです:

import java.io.*;
 
public class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
 
    public static void main(String[] args) throws IOException {
        Thread t1 = new MyThread();
        Thread t2 = new MyThread();
        t1.start();
        t2.start();
    }
}
ログイン後にコピー

2。Runnable インターフェイスを実装することで、

Java では同時に継承できるスーパークラスは 1 つだけであると規定されているため、一部のクラスでは Thread を継承してマルチスレッドを実装することができませんが、複数のインターフェイスを同時に実装できるため、Runnable の方がさらに人気があります。具体的なコードは次のとおりです:

import java.io.*;
 
public class MyThread implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
 
    public static void main(String[] args) throws IOException {
        Thread t1 = new Thread(new MyThread());
        Thread t2 = new Thread(new MyThread());
        t1.start();
        t2.start();
    }
}
ログイン後にコピー

上記のメソッドは、Runnable メソッドを実装するクラスを直接定義しています。実際、次のように、匿名の内部クラス メソッドに変更して Thread を作成することもできます。 ##
import java.io.*;
 
public class MyThread {
    public static void main(String[] args) throws IOException {
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getId());
            }
        });
 
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getId());
            }
        });
 
        t1.start();
        t2.start();
    }
}
ログイン後にコピー

3. Callable

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
 
public class MyThread implements Callable<Integer>{
    public static void main(String[] args){
        MyThread t1 = new MyThread();
        FutureTask<Integer> future = new FutureTask<Integer>(t1);
        new Thread(future,"呵呵哒").start();
    }
    @Override
    public Integer call() throws Exception {
        System.out.println(Thread.currentThread().getName());
        return null;
    }
}
ログイン後にコピー
によるスレッドの実装

以上がJavaマルチスレッドを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート