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