আমি যতদূর বলতে পারি, কারণটি জাভাডোকের অংশে পাওয়া যাবে যা আপনি উদ্ধৃত করেন নি (আমার নীচে জোর দেওয়া):
তালিকাগুলির জন্য একটি পুনরাবৃত্তি যা প্রোগ্রামারকে উভয় দিক দিয়ে তালিকাটিকে অতিক্রম করতে দেয়, পুনরাবৃত্তির সময় তালিকাকে সংশোধন করে ...
আপনি দেখুন, উদ্দেশ্যটি হ'ল তালিকাটি সংশোধন করার সময় ব্যবহারের অনুমতি দেওয়া। সম্ভাব্য সংশোধনগুলির মধ্যে দৃশ্যত উপাদানগুলির অপসারণ অন্তর্ভুক্ত রয়েছে ।
এখন চিন্তা করুন যে আমরা যদি current()
পুনরুক্তিকারীদের জন্য থাকা কোনও উপাদানটি সরিয়ে ফেলি - তাহলে এই উপাদানটি ধরে নেওয়া হবে যে বর্তমান উপাদানটির একটি ধারণা থাকবে? এই প্রসঙ্গে, বর্তমান উপাদানটির ধারণা না থাকলে এটিকে বাস্তবায়নের উপায়টি আমার কাছে বেশ ভাল ধারণা তৈরি করে - কারণ এইভাবে পুনরাবৃত্তকারীকে উপাদান অপসারণের বিষয়ে চিন্তা করতে হবে না।
এটা খেয়াল করা জরুরী যে জাভাডোকের থ্রেড সুরক্ষিত হওয়ার জন্য ইন্টারফেস বাস্তবায়ন প্রয়োজন হয় না।
- কারণ যে, এক সঠিক হ্যান্ডলিং আশা করা উচিত নয় পরিবর্তন বিভিন্ন থ্রেড থেকে করা - যে জন্য, বাস্তবায়নের যেমন প্রতি জাভা মেমরি মডেল দ্বারা নির্দিষ্ট সিংক্রোনাইজ অ্যাক্সেস, গ্যারান্টি দৃশ্যমানতা ইত্যাদি অতিরিক্ত উপায় প্রদান করতে হবে JSR 133 ।
লিস্টিএইটরেটার কী সক্ষম, পুনরাবৃত্তির সময় একই থ্রেড থেকে সম্পাদিত পরিবর্তনগুলি পরিচালনা করছে। সমস্ত পুনরুক্তিকারী এর মতো হয় না, সমকালীন মডেলিংএক্সেপশন জাভাদোকগুলি বিশেষত এ সম্পর্কে সতর্ক করে দেয়:
... নোট করুন যে এই ব্যতিক্রমটি সর্বদা ইঙ্গিত দেয় না যে কোনও বস্তু একই সময়ে ভিন্ন থ্রেড দ্বারা সংশোধন করা হয়েছে। যদি একটি একক থ্রেড কোনও পদ্ধতির অনুরোধগুলির একটি ক্রম জারি করে যা কোনও সামগ্রীর চুক্তি লঙ্ঘন করে তবে অবজেক্টটি এই ব্যতিক্রমটিকে ছুঁড়ে ফেলতে পারে। উদাহরণস্বরূপ, যদি কোনও থ্রেড একটি ব্যর্থ-দ্রুত পুনরুক্তি দিয়ে সংগ্রহের উপর পুনরাবৃত্তি করার সময় কোনও সংগ্রহ সরাসরি সংশোধন করে তবে পুনরুক্তি এই ব্যতিক্রমটিকে নিক্ষেপ করবে ...