এটি যতটা থ্রেড তৈরি করতে পারে তার সীমাবদ্ধতার সাথে ক্যাশেড থ্রেড পুল তৈরি করা অসম্ভব বলে মনে হচ্ছে।
স্থিতি এক্সিকিউটার্স.নিউচ্যাচডথ্রেডপুলটি কীভাবে স্ট্যান্ডার্ড জাভা লাইব্রেরিতে প্রয়োগ করা হয় তা এখানে:
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}
সুতরাং, নির্দিষ্ট আকারের ক্যাশেড থ্রেড পুল তৈরি করতে সেই টেম্পলেটটি ব্যবহার করে:
new ThreadPoolExecutor(0, 3, 60L, TimeUnit.SECONDS, new SynchronusQueue<Runable>());
এখন আপনি যদি এটি ব্যবহার করেন এবং 3 টি কাজ জমা দেন তবে সবকিছু ঠিকঠাক হবে। পরবর্তী কোনও কাজ জমা দেওয়ার ফলস্বরূপ প্রত্যাখ্যানযোগ্য বাতিল হয়েছে।
এটি চেষ্টা করে:
new ThreadPoolExecutor(0, 3, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runable>());
সমস্ত থ্রেড ক্রমান্বয়ে কার্যকর করা হবে। অর্থাৎ, থ্রেড পুলটি আপনার কাজগুলি পরিচালনা করতে কখনও একের বেশি থ্রেড তৈরি করে না।
এটি থ্রেডপুলএক্সেকিউটারের এক্সিকিউট পদ্ধতিতে একটি বাগ? নাকি এই ইচ্ছাকৃত? বা অন্য কোন উপায় আছে?
সম্পাদনা করুন: আমি ক্যাশেড থ্রেড পুলের মতো ঠিক এমন কিছু চাই (এটি চাহিদা অনুসারে থ্রেড তৈরি করে এবং পরে কিছু সময় শেষ করে এগুলি হত্যা করে) তবে এটি যে পরিমাণ থ্রেড তৈরি করতে পারে তার সীমাবদ্ধতার সাথে এবং এটি অতিরিক্ত কাজগুলি একবার সারি করার ক্ষমতা রাখার পরে ability তার থ্রেড সীমা আঘাত। এসলির প্রতিক্রিয়া অনুসারে এটি অসম্ভব। থ্রেডপুলএক্সিকিউটারের এক্সিকিউট () পদ্ধতির দিকে তাকানো সত্যিই অসম্ভব। আমার থ্রেডপুলএক্সেকিউটারকে সাবক্লাস করতে হবে এবং সুইং ওয়ার্কারের মত কিছুটা ওভাররাইড () চালিত করতে হবে তবে সুইং ওয়ার্কার এর এক্সিকিউটিভ () তে যা করেন তা সম্পূর্ণ হ্যাক।