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"); } }
-
Javaでのyield()メソッドの重要性?
利回り() メソッドは静的です スレッドの方法 クラスとそれは現在実行中のスレッドを停止することができ、同じ優先度の他の待機中のスレッドに機会を与えます。 待機中のスレッドがない場合、またはすべての待機中のスレッドの優先度が低い場合 その後、同じスレッドが実行を継続します。 yield()の利点 方法は、他の待機中のスレッドを実行する機会を得ることです。そのため、現在のスレッドの実行に時間がかかり、プロセッサを他のスレッドに割り当てる場合。 構文 public static void yield() 例 class MyThread extends Thread { &nbs
-
JavaでのisDaemon()メソッドの重要性?
デーモンスレッドは優先度の低いスレッドです バックグラウンドで実行され、ほとんどがガベージコレクション(GC)などのバックグラウンドタスクを実行するためにJVMによって作成されるJavaで。 ユーザースレッドが実行されていない場合、デーモンスレッドが実行されていても、JVMは終了できます。デーモンスレッドの唯一の目的は、ユーザースレッドにサービスを提供することです。 isDaemon() メソッドを使用して、スレッドがデーモンスレッドであるかどうかを判断できます。 構文 Public boolean isDaemon() 例 class SampleThread implements R