یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84 دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84
🎯 ثبت نام
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
تسلط جامع بر MVC Core برای توسعه وب حرفه‌ای

یادگیری MVC Core از مبانی تا پیشرفته: شی‌گرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژه‌های کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!

مشاهده بیشتر

آموزش فشرده ساز پاسخ (Response Compression) در Asp.Net MVC Core

آموزش Java – Thread Pool در پردازش موازی در Java

thread pool عبارت است مجموعه ای از worker thread ها که منتظر انجام عملیات بوده و بارها قابل استفاده می باشند. در واقع thread pool یک مخزن است از thread های آماده است که با استفاده از آن دیگر نیازی نیست هر بار خود توسعه دهنده یک thread جدید ایجاد کند بلکه از thread pool می خواهد که برای اجرای عملیات مورد نظر یک thread در اختیار او قرار دهد.

در thread pool تعدادی thread با حجم یکسان ایجاد می شود که عمومی بوده و قادر به انجام هر عملیاتی می باشند. زمانی که عملیات (job) خاصی برای انجام به وجود می آید، service provider یک thread از thread pool یا مخزن thread های آماده بیرون کشیده و عملیات مورد نظر را به آن thread محول می نماید. پس از اینکه عملیات مورد نظر خاتمه یافت، thread مذکور بار دیگر به thread pool بازمی گردد.

مزیت استفاده از Thread Pool

کارایی بالاتر را به دنبال دارد چرا که توسعه دهنده مجبور نیست برای انجام هر عملیاتی که به وجود می آید (در صف قرار می گیرد) یک thread جدید ایجاد نماید.

JSP و Servlet برای پردازش request ها، در container یک thread pool ایجاد می کنند.

مثال کاربردی از Thread Pool در Java

جاوا برای اجرای thread ها در thread pool یک interface به نام Executors و جهت مدیریت thread ها، interface دیگری به نام ExecutorService را ارائه می دهد. در مثال زیر برای پیاده سازی thread pool و مدیریت thread ها از این دو interface استفاده شده است:

فایل: WorkerThread.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 
class WorkerThread implements Runnable { 
private String message; 
public WorkerThread(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(2000);  } catch (InterruptedException e) { e.printStackTrace(); } 
<button></button>

فایل: JavaThreadPoolExample.java

1
2
3
4
5
6
7
8
9
10
11
12
13
public class TestThreadPool { 
public static void main(String[] args) { 
ExecutorService executor = Executors.newFixedThreadPool(5);//creating a pool of 5 threads 
for (int i = 0; i < 10; i++) { 
Runnable worker = new WorkerThread("" + i); 
executor.execute(worker);//calling execute method of ExecutorService 
executor.shutdown(); 
while (!executor.isTerminated()) {   } 
System.out.println("Finished all threads"); 
<button></button>

خروجی:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pool-1-thread-1 (Start) message = 0
pool-1-thread-2 (Start) message = 1
pool-1-thread-3 (Start) message = 2
pool-1-thread-5 (Start) message = 4
pool-1-thread-4 (Start) message = 3
pool-1-thread-2 (End)
pool-1-thread-2 (Start) message = 5
pool-1-thread-1 (End)
pool-1-thread-1 (Start) message = 6
pool-1-thread-3 (End)
pool-1-thread-3 (Start) message = 7
pool-1-thread-4 (End)
pool-1-thread-4 (Start) message = 8
pool-1-thread-5 (End)
pool-1-thread-5 (Start) message = 9
pool-1-thread-2 (End)
pool-1-thread-1 (End)
pool-1-thread-4 (End)
pool-1-thread-3 (End)
pool-1-thread-5 (End)
Finished all threads
<button></button>
1396/08/10 2775 1820
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...