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