DEV Community

Zaw Htut Win
Zaw Htut Win

Posted on

အခန်း(၅) ThreadPoolExecutor နဲ့ တွဲသုံးတဲ့ Datastructure များ(Data Structures in Action)

ThreadPoolExecutor သုံးတဲ့ Queue က Blocking Queue အမျိုးအစားဝင်တွေထဲက ဖြစ်ပါတယ်။


ExecutorService pool = Executors.newFixedThreadPool(10); 
Enter fullscreen mode Exit fullscreen mode

ဒါက သူ့ default constructor ကိုခေါ်ထားတာ။

return new ThreadPoolExecutor( nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>() ); 
Enter fullscreen mode Exit fullscreen mode

ThreadPoolExecutors ဆိုတာက utility class ဖြစ်ပြီးတော့ ဒီနေရာမှာ သူ့ရဲ့ Blocking Queue အမျိုးအစားက LinkedBlockingQueue ကို default အနေနဲ့သုံးတာပါ။ အထက်ဖေါ်ပြပါ code က newFixedThreadPool(10) လို့ခေါ်လိုက်ရင် ထွက်လာမယ့် Executor object ပါ။ LinkedBlockingQueue ကိုနောက်များမှ ဖေါ်ပြပါ့မယ်။


ExecutorService executor = Executors.newCachedThreadPool(); 
Enter fullscreen mode Exit fullscreen mode

ဒါက သူ့ default constructor ကိုခေါ်ထားတာ။

return new ThreadPoolExecutor( 0, // corePoolSize Integer.MAX_VALUE, // maximumPoolSize 60L, TimeUnit.SECONDS, // idle threads die after 60s new SynchronousQueue<Runnable>() // workQueue ); 
Enter fullscreen mode Exit fullscreen mode

ဒီတခါလည်း ThreadPoolExecutor ကို သုံးပြီး SynchronousQueue ကို default အနေနဲ့ သုံးထားတာကို တွေ့ရမှဖြစ်ပါတယ်။


ExecutorService executor = Executors.newSingleThreadExecutor(); 
Enter fullscreen mode Exit fullscreen mode

ဒါက သူ့ default constructor ကိုခေါ်ထားတာ။

return new FinalizableDelegatedExecutorService( new ThreadPoolExecutor( 1, // corePoolSize 1, // maximumPoolSize 0L, TimeUnit.MILLISECONDS, // no idle timeout new LinkedBlockingQueue<Runnable>() // task queue ) ); 
Enter fullscreen mode Exit fullscreen mode

ဒါက ThreadPoolExecutorService ထဲက သူ့ရဲ့ implementation ဖြစ်ပါတယ်။

ပြန်ကြည့်မယ်ဆိုရင်
newFixedThreadPool က LinkedBlockingQueue
newCachedThreadPool က SynchronousQueue
newSingleThreadExecutor က LinkedBlockingQueue
ဆိုတဲ့ Queue Data Structures တွေကို သုံးသွားတာကို မြင်တွေ့နိုင်မှာဖြစ်ပါတယ်။

Top comments (0)