এইটা কাজ করে
- এটি সিঙ্গলথ্রেডএক্সেক্টর থেকে উদ্ভূত, তবে আপনি এটি সহজেই মানিয়ে নিতে পারেন
- জাভা 8 লামডাস কোড, তবে ঠিক করা সহজ
এটি একটি একক থ্রেড দিয়ে একটি নির্বাহক তৈরি করবে, যা অনেকগুলি কার্য পেতে পারে; এবং বর্তমানের পরবর্তীটির সাথে শুরু হয়ে মৃত্যুদন্ড কার্যকর হওয়ার অপেক্ষায় থাকবে
Uncaugth ত্রুটি বা ব্যতিক্রম ক্ষেত্রে uncaughtExceptionHandler এটা ফেলবো
পাবলিক ফাইনাল ক্লাস সিঙ্গলথ্রেডএ্যাকসিকিউটরও এক্সেক্সশনস ith
পাবলিক স্ট্যাটিক এক্সিকিউটরসিভাসি নিউসিংলথ্র্যাডএ্যাকসিকিউটর উইথ এক্সেপশনস (চূড়ান্ত থ্রেড .উনাকুটেএক্সেপশনহ্যান্ডলার অচেতন এক্সেকশনহ্যান্ডলার) {
থ্রেডফ্যাক্টরি কারখানা = (চলমান চলমান) -> {
চূড়ান্ত থ্রেড newThread = নতুন থ্রেড (চলমান, "SingleThreadExecutorWithExferences");
newThread.setUncaughtExceptionHandler ((চূড়ান্ত থ্রেড কৌগথথ্রেড, চূড়ান্ত থ্রোয়েবল থ্রোয়েবল))> {
uncaughtExceptionHandler.uncaughtException (কৌগথথ্রেড, থ্রোয়েবল);
});
newThread ফিরুন;
};
নতুন FinalizableDelegatedExecutorService ফিরিয়ে দিন
(নতুন থ্রেডপুলএক্সিকিউটর (1, 1,
0 এল, টাইমউনিট
নতুন লিঙ্কডব্লকিংকিউ (),
কারখানা) {
এক্সেক্টের পর অকার্যকর সুরক্ষিত (চলমান চলমান, থ্রোয়েবল থ্রোয়েবল) {
super. afterExecute (চলমান, নিক্ষেপযোগ্য);
যদি (নিক্ষিপ্ত == নাল && ভবিষ্যতে চালানোযোগ্য উদাহরণ) {
চেষ্টা করুন
ভবিষ্যত ভবিষ্যত = (ভবিষ্যত) রান্নেবল;
যদি (ভবিষ্যত.ইসডোন ())
future.get ();
}
} ধরা (বাতিলকরণ এক্সসেপশন সিই) {
নিক্ষেপযোগ্য = ce;
} ধরা (এক্সিকিউশনএক্সেপশন ই) {
নিক্ষেপযোগ্য = ee.getCause ();
} ধরা (বাধাপ্রাপ্তি গ্রহণ) অর্থাৎ)
Thread.currentThread () বিঘ্ন ()। // উপেক্ষা / পুনরায় সেট করুন
}
}
যদি (নিক্ষেপযোগ্য! = নাল) {
uncaughtExceptionHandler.uncaughtException (Thread.currentThread (), নিক্ষেপযোগ্য);
}
}
});
}
বেসরকারী স্ট্যাটিক শ্রেণি চূড়ান্তকরণযোগ্য ডেলিগেটেড এক্সেকিউটারসেবা
ডেলিগেটেড এক্সেকিউটারসেবা extend
FinalizableDelegatedExecutorService (এক্সিকিউটারসেবা এক্সিকিউটর) {
সুপার (নির্বাহক);
}
সুরক্ষিত অকার্যকর চূড়ান্তকরণ () {
super.shutdown ();
}
}
/ **
* একটি মোড়কের ক্লাস যা কেবলমাত্র এক্সিকিউটর সার্ভিস পদ্ধতিগুলি প্রকাশ করে
একটি এক্সিকিউটারসেবা বাস্তবায়ন *।
* /
প্রাইভেট স্ট্যাটিক ক্লাস ডেলিগেটেড এক্সেকিউটারসেবা বিস্তৃত অ্যাবস্ট্রাক্ট এক্সেকিউটারসেবা {
বেসরকারী চূড়ান্ত নির্বাহক পরিষেবা ই;
ডেলিগেটেডএকসিকিউটর সার্ভিস (এক্সিকিউটর সার্ভিস এক্সিকিউটার) {ই = এক্সিকিউটর; }
সর্বজনীন শূন্য এক্সিকিউট (রান্নেবল কমান্ড)। e.execute (কমান্ড); }
সর্বজনীন শূন্যতম শাটডাউন ()। ই.শুটডাউন (); }
সর্বজনীন তালিকা শাটডাউন এখন () {রিটার্ন e.shutdownNow (); }
পাবলিক বুলিয়ান শটডাউন () {রিটার্ন e.isSututdown (); }
পাবলিক বুলিয়ান isTerminated () {রিটার্ন e.isTerminated (); }
পাবলিক বুলিয়ান অপেক্ষার সমাপ্তি (দীর্ঘ সময়সীমা, টাইমউনিট ইউনিট)
বিঘ্নিত ধারণাটি ছুড়ে ফেলে {
রিটার্ন e.awaitTerination (সময়সীমা, ইউনিট);
}
সর্বজনীন ভবিষ্যতের জমা (চলমান টাস্ক) {
রিটার্ন e.submit (টাস্ক);
}
পাবলিক ফিউচার জমা (কলযোগ্য টাস্ক) {
রিটার্ন e.submit (টাস্ক);
}
সর্বজনীন ভবিষ্যত জমা দিন (চলমান টাস্ক, টি ফলাফল) {
রিটার্ন e.submit (কার্য, ফলাফল);
}
সর্বজনীন তালিকা> ইনভোকএল (সংগ্রহ> কার্য)
বিঘ্নিত ধারণাটি ছুড়ে ফেলে {
e.invokeAll (কার্য) রিটার্ন করুন;
}
সর্বজনীন তালিকা> ইনভোকএল (সংগ্রহ) কার্যগুলি,
দীর্ঘ সময়সীমা, টাইমউনিট ইউনিট)
বিঘ্নিত ধারণাটি ছুড়ে ফেলে {
e.invokeAll (কর্ম, সময়সীমা, ইউনিট) রিটার্ন করুন;
}
সর্বজনীন টি দাওয়াত করুন (সংগ্রহ> কার্য)
বিঘ্নিত এক্সসেপশন, এক্সিকিউশনএক্সেপশন th
e.invokeAny (কর্ম) রিটার্ন করুন;
}
সর্বজনীন টি আহ্বান করুন (সংগ্রহ> কার্যগুলি,
দীর্ঘ সময়সীমা, টাইমউনিট ইউনিট)
বিঘ্নিত এক্সসেপশন, এক্সিকিউশন এক্সেপশন, টাইমআউট এক্সেপশন th
e.invokeAny রিটার্ন করুন (টাস্কস, সময়সীমা, ইউনিট);
}
}
প্রাইভেট সিঙ্গলথ্রেডএক্সিকিউটর এক্সেক্সসেপস () এর সাথে)}
}