JAVAマルチスレッド学習(2)---- JAVAはマルチスレッドを実現します

前回の記事はマルチスレッドの基本的な理解についてです。理解したら、JAVAに戻ってマルチスレッドを実現してください。

JAVAマルチスレッドクラス:スレッドは
最初にスレッドを調べます。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入ここに画像の説明を挿入
上記からわかるように、マルチスレッドを作成するには2つの方法があります。

  • スレッドを継承し、runメソッドを書き直します
  • Runnableを実装し、ruNメソッドを書き直します

スレッドを継承する

public class Main extends Thread {
    
    
    @Override
    public void run() {
    
    
        for (int i = 0; i < 200; i++) {
    
    
            System.out.println("多多多多敲代码");
        }
    }
    public static void main(String[] args) {
    
    
        Main test = new Main();
        test.run();
        for (int i = 0; i < 2000; i++) {
    
    
            System.out.println("i = " + i);
        }
    }
}

//输出结果,先输出完200多多多多敲代码,再到2000次i
部分展示:
多多多多敲代码
多多多多敲代码
多多多多敲代码
多多多多敲代码
i = 0
i = 1
i = 2
i = 3
i = 4

ただし、.startを交互に実行すると、より多くのサイクルの影響が明らかになります。

public class Main extends Thread {
    
    
    @Override
    public void run() {
    
    
        for (int i = 0; i < 200; i++) {
    
    
            System.out.println("多多多多敲代码");
        }
    }
    public static void main(String[] args) {
    
    
        Main test = new Main();
        test.start();
        for (int i = 0; i < 2000; i++) {
    
    
            System.out.println("i = " + i);
        }
    }
}
//输出结果,交替执行
部分展示:
多多多多敲代码
多多多多敲代码
多多多多敲代码
i = 1
多多多多敲代码
多多多多敲代码
多多多多敲代码

Runnableインターフェースを実装する

public class TestThread implements Runnable{
    
    
    @Override
    public void run() {
    
    
        for (int i = 0; i < 20; i++) {
    
    
            System.out.println("多多多多敲代码");
        }
    }

    public static void main(String[] args) {
    
    
        TestThread testThread = new TestThread();
        //通过线程对象来开启我们的线程,代理
        //new Thread(testThread).run();
		new Thread(testThread).start();
        for (int i = 0; i < 2000; i++) {
    
    
            System.out.println("i = " + i);
        }
    }
}

运行结果与上面一致,不做过多的描述

したがって、次の図が得られます。
ここに画像の説明を挿入

上記の2つの実装の違いは何ですか?

  1. Threadクラスを
    継承する
    ①サブクラスはマルチスレッド機能でThreadクラスを継承する②Startメソッド:subclass.start()③非
    推奨:単一継承の制限

  2. Runnableインターフェースの
    実現①マルチスレッド機能でRunnableを実現
    ②Startメソッド:ターゲットオブジェクト+スレッドobject.start()を渡す
    ③提案:柔軟で便利、単一継承の制限を回避

記事の内容のほとんどは個人的に整理されています。java3yによって引用された記事を参照してください。

おすすめ

転載: blog.csdn.net/weixin_42553616/article/details/107110498