یک برنامهٔ جاوا بنویسید که با استفاده از ExecutorService (FixedThreadPool) برای یک لیست از اعداد مثبت، برای هر عدد یک Callable ارسال کند تا فاکتوریل آن را محاسبه کرده و در نهایت نتایج به ترتیب اعداد اصلی چاپ شوند.
6.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:54 0.0
برای حل این مسئله از Executors.newFixedThreadPool برای ایجاد یک Thread Pool استفاده کنید و برای هر عدد یک Callable بسازید که فاکتوریل را برگرداند؛ سپس با متد submit، Futureها را در یک لیست ذخیره کنید و به ترتیب با Future.get() نتایج را دریافت و چاپ کنید. نکات: از Callable وقتی نیاز به مقدار بازگشتی است استفاده کنید، استثناهای InterruptedException و ExecutionException را مدیریت کنید، پس از ارسال تسکها سرویس را با shutdown() ببندید و در صورت نیاز awaitTermination را فراخوانی کنید تا از پایان درست تردها مطمئن شوید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای حفظ ترتیب چاپ نتایج، futures را به همان ترتیب که اعداد ورودی هستند ذخیره کرده و با Future.get() در همان حلقه چاپ کنید. فاکتوریل اعداد بزرگ معمولاً به BigInteger و بازهٔ عددی نامحدود نیاز دارد تا از overflow جلوگیری شود. به دلیل احتمال بروز InterruptedException و ExecutionException در فراخوانی get، آنها را مدیریت یا بازگردانی مناسبی انجام دهید. پس از ارسال تسکها سرویس را با shutdown() ببندید و در صورت نیاز awaitTermination را فراخوانی کنید تا تکتک تردها پایان یابد.
گزارش