Java-マルチスレッド(2)

Javaプログラミングは、次の3つの部分で構成されています。

1.JDKシステムライブラリ

JRE:Javaランタイム環境(Javaランタイム環境)、プログラムの実行専用。

JDK:Java Development Kit(Java Development Kit)。プログラム開発が必要な場合は、JDKをインストールする必要があります。

文字列、スキャナー、パッケージングクラス。

java.lang.Thread

javax.servlet.Servlet

2.サードパーティライブラリ

Java以外の公式組織、C3P0データベース接続プール、Springフレームワーク、DBUtils、Dom4Jによって提供されるいくつかの成熟した便利なツール...

github:世界最大のゲイの出会い系サイト

3.開発者定義のコード

特定のビジネス要件に従って記述されたビジネスコード。

Javaでのスレッドの使用

  • Threadクラスを継承します

1.カスタムクラスを作成し、Threadクラスを継承します。

2. Threadクラスのrunメソッドを書き直し、スレッドのビジネスロジックコードを記述します。

package com.southwind.test;

public class MyThread extends Thread {
    
    
	
	@Override
	public void run() {
    
    
		// TODO Auto-generated method stub
		//定义业务逻辑
		for(int i = 0;i<10;i++) {
    
    
			System.out.println("-------------MyThread");
		}
	}
	
}

3.使用します。

package com.southwind.test;

public class Test {
    
    
	public static void main(String[] args) {
    
    
		//开启两个子线程
		MyThread thread1 = new MyThread();
		MyThread2 thread2 = new MyThread2();
		thread1.start();
		thread2.start();
	}
}

注:runメソッドの呼び出しは通常のオブジェクトの実行と同等であり、CPUリソースを取得しないため、runメソッドを使用してスレッドのタスクを呼び出すことはできません。

startメソッドを介してのみ、スレッドを開始してCPUリソースを取得できます。スレッドがCPUリソースを取得すると、runメソッドが自動的に呼び出されます。

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

1.カスタムクラスを作成し、Runnableインターフェイスを実装します。

2. runメソッドを実装し、スレッドのビジネスロジックコードを記述します。

package com.southwind.test;

public class MyRunnable implements Runnable {
    
    

	@Override
	public void run() {
    
    
		// TODO Auto-generated method stub
		for(int i=0;i<1000;i++) {
    
    
			System.out.println("========MyRunnable=======");
		}
	}
	
}

3.使用します。

MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
MyRunnable2 runnable2 = new MyRunnable2();
Thread thread2 = new Thread(runnable2);
thread2.start();

スレッドとタスク:

スレッドはCPUリソースをプリエンプトします。タスクは特にビジネスロジックを実行します。スレッドにはタスクが含まれます。スレッドは開始します。リソースがプリエンプトされると、タスクは実行(実行)を開始します。

2つの方法の違い:

1. Threadクラスを継承するMyThreadは、クラス内のrunメソッドを直接オーバーライドします。これを使用する場合は、MyThreadを直接インスタンス化して開始します。これは、Thread内にRunnableがあるためです。

2. Runnableインターフェイスを実装するメソッドであるMyRunnbaleは、実装クラスのrunメソッドを書き換えます。これを使用する場合は、最初にThreadオブジェクトを作成し、MyRunnableをスレッドThread.startに挿入する必要があります。

実際の開発では、2番目の方法が推奨されます。

オンライン描画ソフトウェア:

https://www.processon.com/diagrams

スレッドステータス

スレッドには5つの状態があります。特定の状況下では、スレッドは異なる状態を切り替えることができます。5つの状態は次のとおりです。

  • 作成状態:まだ開始されていない新しいスレッドオブジェクトをインスタンス化します。
  • 準備完了状態:作成されたスレッドオブジェクトは、startメソッドを呼び出して起動を完了し、スレッドプールに入り、CPUリソースを待ちます。
  • 実行ステータス:スレッドオブジェクトはCPUリソースを取得し、一定期間内にタスクを実行します。
  • ブロック状態:実行中のスレッドは、タスクの実行を一時停止し、占有されているCPUリソースを解放し、ブロックを解除した後、直接実行状態に戻ることはできませんが、CPUリソースを待機して準備完了状態に戻ります。
  • 終了ステータス:スレッドの実行が終了したか、例外のためにスレッドが終了しました。

おすすめ

転載: blog.csdn.net/qq_40220309/article/details/107420923