السلام عليكم
قبل وضع السؤال استسمحكم فمعلوماتي في الجافا ضئيلة.
لدينا تطبيق يستخدم ThreadPoolExecutor لتنفيذ مجموعة من المهمات Tasks.(وليكن لدينا الكائن executor)
قد يحدث رفض reject لمجموعة من الـ Tasks أثناء التنفيذ , فما هي الطريقة لمعرفة المهمات التي تم رفضها؟ وما هو الحل الأمثل لمعاودة تنفيذ هذه المهمات المرفوضة؟
ما فكرت به حاليا:
بالنسبة للسؤال الأول :
نقوم بتعريف List ولنسمها unexecutedTaskList يتم إضافة رقم ID المهمة المرفوضة إليها (Class variable). هذه الخطوة تتم في rejectedExecution الخاصة بصنف جديد ولنسمه RejectedHandler وهو يرث RejectedExecutionHandler, حيث يتم إسناد handler من الصنف RejectedHandler للكائن executor بواسطة setRejectedExecutionHandler.
بالنسبة للسؤال الثاني :
بعد التأكد من أن الكائن executor وصل للحالة isTerminated يتم إعادة تنفيذ المهام -إن وجدت- في unexecutedTaskList وهكذا تستمر حلقة تكرار في حال وجود مهام في unexecutedTaskList (أي حجم الـ List لا يساوي صفر).
بالطبع بالإمكان إستخدام تركيب آخر غير الـList إعتمادا على نوعية المعلومات المراد حفظها..
لا أعلم مدى كون الطريقة التي ذكرتها صحيحة وخالية من المشاكل.
