Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのスレッドプール


スレッドプールは、事前に初期化されたスレッドのコレクションです。スレッドプールの背後にある一般的な計画は、メソッドの起動時にさまざまなスレッドを形成し、それらが座って作業を期待する場所に配置することです。サーバーは参加の呼び出しを受信すると、このプールからスレッドを起動し(使用可能な場合)、サービスの要求を渡します。スレッドがサービスを完了すると、プールに戻り、多くの作業を待ちます。プールにアクセス可能なスレッドが含まれていない場合、サーバーはスレッドが解放されるまで待機します。

新しいスレッドを作成する必要がないため、時間を節約できます。

サーブレットとJSPで、リクエストをメソッド化するためのスレッドプールを作成する場所で使用されます。

EmployeeThread.java

importjava.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class EmployeeThread implements Runnable {
   private String message;
   public EmployeeThread(String s) {
      this.message=s;
   }
   public void run() {
      System.out.println(Thread.currentThread().getName()+" (Start) message = "+message);
      processmessage();//call processmessage method that sleeps the thread for 2 seconds
      System.out.println(Thread.currentThread().getName()+" (End)");//prints thread name
   }
   private void processmessage() {
      try { Thread.sleep(1000);
      }
      catch (InterruptedException e){
         e.printStackTrace(); }
   }
}

ExampleThreadPool.java

public class implementThreadPool {
   public static void main(String[] args) {
      ExecutorService executor = Executors.newFixedThreadPool(6); //creating a pool of 6 threads
      for (int m = 0; m< 6; m++) {
         Runnable worker = new EmployeeThread("" + i);
         executor.execute(worker); //calling execute method of ExecutorService
      }
      executor.shutdown();
      while (!executor.isTerminated()) { }
      System.out.println("Finished all the threads");
   }
}

  1. Javaでのyield()メソッドの重要性?

    利回り() メソッドは静的です スレッドの方法 クラスとそれは現在実行中のスレッドを停止することができ、同じ優先度の他の待機中のスレッドに機会を与えます。 待機中のスレッドがない場合、またはすべての待機中のスレッドの優先度が低い場合 その後、同じスレッドが実行を継続します。 yield()の利点 方法は、他の待機中のスレッドを実行する機会を得ることです。そのため、現在のスレッドの実行に時間がかかり、プロセッサを他のスレッドに割り当てる場合。 構文 public static void yield() 例 class MyThread extends Thread {   &nbs

  2. JavaでのisDaemon()メソッドの重要性?

    デーモンスレッドは優先度の低いスレッドです バックグラウンドで実行され、ほとんどがガベージコレクション(GC)などのバックグラウンドタスクを実行するためにJVMによって作成されるJavaで。 ユーザースレッドが実行されていない場合、デーモンスレッドが実行されていても、JVMは終了できます。デーモンスレッドの唯一の目的は、ユーザースレッドにサービスを提供することです。 isDaemon() メソッドを使用して、スレッドがデーモンスレッドであるかどうかを判断できます。 構文 Public boolean isDaemon() 例 class SampleThread implements R