ワンスレッドベース

1つ、並列および並行性

平行:並んで、または同時に歩くことを指します。2つ以上のイベントが同時に発生することを指します。
並行性:同時にですが、並列処理とは異なり、マクロレベルで同時に発生しますが、実際にはミクロレベルで交互に実行されます。これは、2つ以上のイベントが同じイベント領域で実行されることを意味します。巨視的には、同時に実行されているようです。

ここに画像の説明を挿入
同時実行とは、2つのキューが1つのコーヒーマシンを交互に使用することを意味し、並列とは、2つのキューが2つのコーヒーマシンを同時に使用することを意味します。

2つ、プロセスとスレッド

1.プロセス

1.1プロセスの概念

プロセスはメモリ内の独立したアプリケーションであり、独自のメモリ空間を持っています。アプリケーションは、複数のプロセスを同時に開始できます。プロセス内のデータストレージスペースは独立しており(スタックスペースとヒープメモリ)、少なくとも1つのスレッドがあります。

1.2API操作

工法:

コンストラクタ 説明
ProcessBuilder(リストコマンド) 指定されたオペレーティングシステムプログラムとパラメーターを使用してプロセスビルダーを構築します。
ProcessBuilder(文字列…コマンド) 指定されたオペレーティングシステムプログラムとパラメーターを使用してプロセスビルダーを構築します。

たとえば、メモ帳を開きます。また、startを複数回呼び出すことができます。同時に複数のプロセスを開きます。

    public static void main(String[] args) throws IOException {
    
    
        ProcessBuilder ps = new ProcessBuilder("mspaint");
        ps.start();
        ps.start();
    }
	public static void main(String[] args) throws IOException {
    
    
        Runtime r = Runtime.getRuntime();
        r.exec("mspaint");
    }

上記のAPIは両方ともプロセスを開始できます!

2.スレッド

2.1スレッドの概念

スレッドはプロセス操作の単位です。プロセスは複数のスレッドを持つことができます。ヒープスペースは共有され、スタックスペースは独立しており、スレッドはプロセスよりも少ないリソースを消費し、相互に影響を与える可能性があります。これは、ライトプロセスまたはプロセス要素とも呼ばれます。

2.2スレッドのスケジューリング

通常、コンピュータにCPUが1つしかない場合、つまり、一度に実行できるコンピュータ命令は1つだけであり、各スレッドは、CPUを使用する権利がある場合にのみ命令を実行できます。JVMはスレッドのスケジューリングを担当します。JVMは、リアルタイム割り当ての代わりにプリエンプティブスケジューリングを使用します。これにより、マルチスレッドの実行結果がランダムになります。

2.3マルチスレッドの利点

1プロセスと比較して、スレッドはヒープメモリを共有できます。
2作成プロセスでは、システムリソースを再割り当てする必要があります。スレッド作成のコストは小さく、タスクは高効率で並行して実行できます。

3、スレッドを作成します

1.スレッドを継承します

public class T1 extends Thread {
    
    

    @Override
    public void run() {
    
    
		//TODO 线程执行体
    }
}

Threadを継承し、runメソッドをオーバーライドしてスレッドを作成します。star()メソッドを呼び出してスレッドを開始します!

2.Runnableを実装する

public class T2 implements Runnable {
    
    

    @Override
    public void run() {
    
    

    }
}

Runnableを実装し、runメソッドをオーバーライドしてスレッドを作成します。star()メソッドを呼び出してスレッドを開始します!

3.匿名の内部クラス

public class T3  {
    
    

    public void create(){
    
    
        new Thread(() -> {
    
    
            //TODO 
        }).start();
    }
}

匿名内部クラス作成スレッドは、または一時スレッドの作成に適しています。

第四に、RunnableとThreadの違い

記事を参照してください:RunnableとThreadの違いを完全に理解する

おすすめ

転載: blog.csdn.net/GoSaint/article/details/115126315