یک برنامه جاوا بنویسید که با استفاده از چند Thread موازی و یک ConcurrentHashMap مشترک فراوانی کلمات در یک لیست از رشته‌ها را به‌صورت امن محاسبه کند، به‌طوری‌که هر Thread بخشی از لیست را پردازش کند و نتایج در نقشهٔ مشترک ذخیره شود.

3.0 بازدید آخرین ویرایش در 199 روز قبل ساعت 16:23

0.0

از java.util.concurrent از جمله ConcurrentHashMap و یک ExecutorService (FixedThreadPool) استفاده کنید؛ هر تسک لیست را پردازش کرده و برای افزایش شمارش کلمات از متدهای امن هم‌زمان مانند map.merge(word, 1, Integer::sum) یا map.compute(word, (k,v) -> v==null?1:v+1) بهره ببرید. پس از ارسال تمام تسک‌ها، executor را shutdown کرده و با awaitTermination منتظر اتمام بمانید؛ این روش از نیاز به بلوک synchronized جلوگیری می‌کند و برای مبتدیان روش ساده و مؤثری برای استفاده از مجموعه‌های هم‌زمان در جاوا فراهم می‌آورد.

توسط پژوهشگر در 199 روز قبل ساعت 16:23
دسته بندی ها: Java Java for beginner
nima در 199 روز قبل ساعت 16:24

استفاده از ConcurrentHashMap و ExecutorService (FixedThreadPool) روش امن و کارآمدی برای شمارش کلمات در یک لیست رشته‌هاست. برای بهینه‌سازی منابع، اندازهٔ thread pool را بر اساس تعداد هسته‌های CPU و بار کار تنظیم کنید. از map.merge یا map.compute برای به‌روزرسانی اتمیک شمارش استفاده کنید تا از race conditions جلوگیری شود. نهایتاً با shutdown و awaitTermination منتظر پایان کار تسک‌ها بمانید تا نتیجه کاملاً در نقشه مشترک جمع‌آوری شود.

گزارش

1 پاسخ

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

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