導入する前に、 スレッドのコンセプト 、複数のタスクを並行して実行できませんでした。それは欠点であり、その欠点を取り除くために、 スレッドのコンセプト が紹介されました。
あ 糸 これは非常に軽量なプロセスであり、複数のタスクを同時に実行することでプログラムがより効率的に動作できるようにするプロセスの最小部分とも言えます。
bツリーとbツリー
バックグラウンドで複雑なタスクを実行するために、 Javaにおけるスレッドの概念 。すべてのタスクはメイン プログラムに影響を与えることなく実行されます。プログラムまたはプロセスでは、すべてのスレッドが独自の実行パスを持っているため、プロセスの各スレッドは独立しています。
使用するもう一つの利点 糸 つまり、スレッドの実行時に例外またはエラーが発生しても、他のスレッドの実行には影響しません。すべてのスレッドは共通のメモリを共有し、独自のスタック、ローカル変数、プログラム カウンターを持ちます。複数のスレッドが同時に並行して実行される場合、このプロセスは次のように呼ばれます。 マルチスレッド化 。
簡単に言うと、スレッドとは次のようなものです。
- 単一プロセス内で複数のアクティビティを実行できる機能。
- 軽量プロセス。
- 実行された一連のステートメント。
- ネストされたメソッド呼び出しのシーケンス。
ねじモデル
プロセスと同様に、スレッドもいくつかの状態で存在します。これらの状態は次のとおりです。
1) 新しい (すぐに実行できる)
スレッドが入っています 新しい CPU 時間を取得したとき。
2) ランニング
スレッドが入っています ランニング 実行中の状態。
3) 停止中
スレッドが 一時停止中 一時的に非アクティブまたは実行中の状態。
4) ブロックされました
スレッドが ブロックされました リソースを待っているときの状態。
5) 終了
スレッドは、実行を直ちに停止すると、いつでもこの状態になります。
サンプルJavaコード
スレッドの作成
スレッドは、スレッドを「作成または実装」することによって作成されます。 実行可能なインターフェース または拡張することにより、 スレッドクラス 。スレッドを作成できる方法はこれら 2 つだけです。
スレッドを作成するこれらの両方の方法について詳しく見てみましょう。
スレッドクラス
あ スレッドクラス には、スレッド上でさまざまな操作を実行できるようにするメソッドとコンストラクターがいくつかあります。 Thread クラスは、 物体 クラス。の 物体 クラスは 実行可能 インターフェース。スレッド クラスには、さまざまな操作を実行するために使用される次のコンストラクターがあります。
実行可能インターフェース(run()メソッド)
Runnable インターフェイスは、スレッドによって実行されるインスタンスを持つクラスによって実装される必要があります。実行可能なインターフェイスにより、 走る() スレッドのアクションを実行するメソッド。
start() メソッド
このメソッドは、新しく作成したスレッドを開始するために使用されます。新しいコールスタックで新しいスレッドを開始します。実行後、 始める() メソッドを実行すると、スレッドの状態が New から Runnable に変更されます。それは、 run() メソッド スレッドが実行する正しい時間を取得したとき。
を作成する方法を理解するために例を見てみましょう。 ジャワ Thread クラスを拡張してスレッドを作成します。
ThreadExample1.java
// Implementing runnable interface by extending Thread class public class ThreadExample1 extends Thread { // run() method to perform action for thread. public void run() { int a= 10; int b=12; int result = a+b; System.out.println('Thread started running..'); System.out.println('Sum of two numbers is: '+ result); } public static void main( String args[] ) { // Creating instance of the class extend Thread class ThreadExample1 t1 = new ThreadExample1(); //calling start method to execute the run() method of the Thread class t1.start(); } }
出力:
Javaで文字列を整数に変換する
実行可能なインターフェースを実装してスレッドを作成する
Java では、実行可能なインターフェイスを実装してスレッドを作成することもできます。実行可能なインターフェイスは、run() メソッドと start() メソッドの両方を提供します。
実行可能なインターフェイスを使用してスレッドを作成、開始、実行する方法を理解するための例を見てみましょう。
ThreadExample2.java
class NewThread implements Runnable { String name; Thread thread; NewThread (String name){ this.name = name; thread = new Thread(this, name); System.out.println( 'A New thread: ' + thread+ 'is created ' ); thread.start(); } public void run() { try { for(int j = 5; j > 0; j--) { System.out.println(name + ': ' + j); Thread.sleep(1000); } }catch (InterruptedException e) { System.out.println(name + ' thread Interrupted'); } System.out.println(name + ' thread exiting.'); } } class ThreadExample2 { public static void main(String args[]) { new NewThread('1st'); new NewThread('2nd'); new NewThread('3rd'); try { Thread.sleep(8000); } catch (InterruptedException excetion) { System.out.println('Inturruption occurs in Main Thread'); } System.out.println('We are exiting from Main Thread'); } }
出力:
上記の例では、実行可能なインターフェイスを実装することでマルチスレッドを実行します。マルチスレッドの詳細については、 ここをクリック 。