logo

Java スレッド | Javaでスレッドを作成する方法

スレッドを作成するには 2 つの方法があります。

  1. Threadクラスを拡張することで
  2. Runnable インターフェイスを実装することによって。

スレッドクラス:

Thread クラスは、スレッドを作成して操作を実行するためのコンストラクターとメソッドを提供します。Thread クラスは Object クラスを拡張し、Runnable インターフェイスを実装します。

Thread クラスの一般的に使用されるコンストラクター:

  • 糸()
  • スレッド(文字列名)
  • スレッド(実行可能r)
  • スレッド(実行可能r,文字列名)

Thread クラスの一般的に使用されるメソッド:

    public void run():スレッドのアクションを実行するために使用されます。public void start():スレッドの実行を開始します。JVM はスレッド上で run() メソッドを呼び出します。public void sleep(長いミリ秒):現在実行中のスレッドを、指定されたミリ秒間スリープ (実行を一時的に停止) させます。public void join():スレッドが終了するのを待ちます。public void join(長いミリ秒):指定されたミリ秒間、スレッドが終了するのを待ちます。public int getPriority():スレッドの優先度を返します。public int setPriority(int 優先度):スレッドの優先順位を変更します。パブリック String getName():スレッドの名前を返します。public void setName(文字列名):スレッドの名前を変更します。パブリックスレッド currentThread():現在実行中のスレッドの参照を返します。public int getId():スレッドのIDを返します。public Thread.State getState():スレッドの状態を返します。パブリックブール値 isAlive():スレッドが生きているかどうかをテストします。public void yield():現在実行中のスレッド オブジェクトを一時停止し、他のスレッドが実行できるようにします。パブリックボイドサスペンド():スレッドを一時停止するために使用されます (非推奨)。public voidresume():一時停止されたスレッド (非推奨) を再開するために使用されます。public void stop():スレッドを停止するために使用されます (非推奨)。パブリックブール値 isDaemon():スレッドがデーモン スレッドかどうかをテストします。public void setDaemon(boolean b):スレッドをデーモンまたはユーザー スレッドとしてマークします。パブリック void 割り込み():スレッドを中断します。パブリックブール値 isInterrupted():スレッドが中断されたかどうかをテストします。パブリック静的ブール値中断():現在のスレッドが中断されたかどうかをテストします。

実行可能なインターフェース:

Runnable インターフェイスは、スレッドによって実行されるインスタンスを持つクラスによって実装される必要があります。実行可能なインターフェイスには、run() という名前のメソッドが 1 つだけあります。

NFAからDFAへの変換
    public void run():スレッドのアクションを実行するために使用されます。

スレッドを開始します:

start() メソッド Thread クラスのは、新しく作成されたスレッドを開始するために使用されます。次のタスクを実行します。

  • 新しいスレッドが (新しいコールスタックで) 開始されます。
  • スレッドは New 状態から Runnable 状態に移行します。
  • スレッドが実行する機会を得ると、そのターゲットの run() メソッドが実行されます。

1) Thread クラスを拡張した Java Thread の例

ファイル名: マルチ.java

 class Multi extends Thread{ public void run(){ System.out.println('thread is running...'); } public static void main(String args[]){ Multi t1=new Multi(); t1.start(); } } 

出力:

 thread is running... 

2) Runnable インターフェースを実装した Java スレッドの例

ファイル名: マルチ3.java

メール
 class Multi3 implements Runnable{ public void run(){ System.out.println('thread is running...'); } public static void main(String args[]){ Multi3 m1=new Multi3(); Thread t1 =new Thread(m1); // Using the constructor Thread(Runnable r) t1.start(); } } 

出力:

 thread is running... 

Thread クラスを拡張していない場合、クラス オブジェクトはスレッド オブジェクトとして扱われません。したがって、Thread クラス オブジェクトを明示的に作成する必要があります。クラスの run() メソッドが実行できるように、Runnable を実装するクラスのオブジェクトを渡します。

3) スレッドクラスの使用: Thread(文字列名)

上記で定義したコンストラクターを使用して、Thread クラスを直接使用して新しいスレッドを生成できます。

ファイル名: MyThread1.java

 public class MyThread1 { // Main method public static void main(String argvs[]) { // creating an object of the Thread class using the constructor Thread(String name) Thread t= new Thread('My first thread'); // the start() method moves the thread to the active state t.start(); // getting the thread name by invoking the getName() method String str = t.getName(); System.out.println(str); } } 

出力:

 My first thread 

4) スレッドクラスの使用: Thread(Runnable r, String name)

次のプログラムを観察してください。

企業対企業

ファイル名: MyThread2.java

 public class MyThread2 implements Runnable { public void run() { System.out.println('Now the thread is running ...'); } // main method public static void main(String argvs[]) { // creating an object of the class MyThread2 Runnable r1 = new MyThread2(); // creating an object of the class Thread using Thread(Runnable r, String name) Thread th1 = new Thread(r1, 'My new thread'); // the start() method moves the thread to the active state th1.start(); // getting the thread name by invoking the getName() method String str = th1.getName(); System.out.println(str); } } 

出力:

 My new thread Now the thread is running ...