یک برنامه جاوا بنویسید که با استفاده از چند 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 جلوگیری میکند و برای مبتدیان روش ساده و مؤثری برای استفاده از مجموعههای همزمان در جاوا فراهم میآورد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از ConcurrentHashMap و ExecutorService (FixedThreadPool) روش امن و کارآمدی برای شمارش کلمات در یک لیست رشتههاست. برای بهینهسازی منابع، اندازهٔ thread pool را بر اساس تعداد هستههای CPU و بار کار تنظیم کنید. از map.merge یا map.compute برای بهروزرسانی اتمیک شمارش استفاده کنید تا از race conditions جلوگیری شود. نهایتاً با shutdown و awaitTermination منتظر پایان کار تسکها بمانید تا نتیجه کاملاً در نقشه مشترک جمعآوری شود.
گزارش