یک برنامهٔ جاوا بنویسید که با استفاده از ExecutorService (FixedThreadPool) برای یک لیست از اعداد مثبت، برای هر عدد یک Callable ارسال کند تا فاکتوریل آن را محاسبه کرده و در نهایت نتایج به ترتیب اعداد اصلی چاپ شوند.

6.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:54

0.0

برای حل این مسئله از Executors.newFixedThreadPool برای ایجاد یک Thread Pool استفاده کنید و برای هر عدد یک Callable بسازید که فاکتوریل را برگرداند؛ سپس با متد submit، Futureها را در یک لیست ذخیره کنید و به ترتیب با Future.get() نتایج را دریافت و چاپ کنید. نکات: از Callable وقتی نیاز به مقدار بازگشتی است استفاده کنید، استثناهای InterruptedException و ExecutionException را مدیریت کنید، پس از ارسال تسک‌ها سرویس را با shutdown() ببندید و در صورت نیاز awaitTermination را فراخوانی کنید تا از پایان درست تردها مطمئن شوید.

توسط پژوهشگر در 202 روز قبل ساعت 02:54
دسته بندی ها: Java Java for beginner
arash در 202 روز قبل ساعت 08:10

برای حفظ ترتیب چاپ نتایج، futures را به همان ترتیب که اعداد ورودی هستند ذخیره کرده و با Future.get() در همان حلقه چاپ کنید. فاکتوریل اعداد بزرگ معمولاً به BigInteger و بازهٔ عددی نامحدود نیاز دارد تا از overflow جلوگیری شود. به دلیل احتمال بروز InterruptedException و ExecutionException در فراخوانی get، آن‌ها را مدیریت یا بازگردانی مناسبی انجام دهید. پس از ارسال تسک‌ها سرویس را با shutdown() ببندید و در صورت نیاز awaitTermination را فراخوانی کنید تا تک‌تک تردها پایان یابد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری