জাভাতে দ্রুত এবং ব্যর্থ নিরাপদ আইট্রেটারগুলি: পার্থক্য কী?



'ব্যর্থ দ্রুত এবং ব্যর্থ নিরাপদ আইট্রেটরস' শীর্ষক এই নিবন্ধটি আপনাকে এই দুটি আইট্রেটারকে প্রাসঙ্গিক উদাহরণগুলির সাথে বিশদভাবে তুলনা করতে সহায়তা করবে।

দুই ধরণের পুনরাবৃত্তিকে সমর্থন করুন, প্রথমটি দ্রুত ব্যর্থ হয় এবং দ্বিতীয়টি নিরাপদে ব্যর্থ হয়। জাভাতে ব্যতিক্রম হ্যান্ডলিংয়ের বিষয়টি এগুলি একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। ‘ব্যর্থ দ্রুত এবং ব্যর্থ নিরাপদ আইট্রেটারস’ শীর্ষক এই নিবন্ধে, আমরা দুটি পুনরুক্তিকারীদের কাজের পাশাপাশি তাদের মধ্যে প্রয়োজনীয় পার্থক্য বিশ্লেষণ করব।

নিম্নলিখিত এই নিবন্ধে আলোচনা করা পয়েন্টার নীচে:





সেরা অনুশীলন পরিচালনা করে ওরাকল পিএল এসকিএল ত্রুটি

বিস্তারিত ব্যাখ্যায় নেওয়ার আগে, সামনের পরিবর্তনের ধারণার সাথে নিজেকে পরিচিত করতে দিন।

একযোগে পরিবর্তন

যখন একটি একক থ্রেড (বা একাধিক থ্রেড) সংগ্রহের উপরে পুনরাবৃত্তি করে, এটি সংগ্রহের উপাদানটি সংযোজন করে বা মুছলে বা কোনও নির্দিষ্ট অবস্থানে উপাদানটির মান আপডেট করে সংগ্রহের কাঠামো পরিবর্তন করতে পারে। এই প্রক্রিয়াটি সমবর্তী পরিবর্তন হিসাবে পরিচিত।



আসুন আমরা দ্রুত দুটি সিস্টেমের উপরে নজর রাখি যা উপরের বিষয়ের উপর উদ্বেগ প্রকাশ করে, এর বিশদ বিবরণে যাওয়ার আগে,

ব্যর্থ ফাস্ট সিসেটেম:

কোনও সিস্টেমকে একটি ব্যর্থ দ্রুত সিস্টেম হিসাবে চিহ্নিত করা হয়, যদি এটি ত্রুটির ঘটনার সাথে সাথেই বন্ধ হয়ে যায়। অপারেশনগুলি তাত্ক্ষণিকভাবে বাতিল হয়ে যায় এবং ব্যর্থতা বা ত্রুটিগুলি প্রকাশিত হয়।

নিরাপদ সিস্টেম ব্যর্থ:

কোনও ত্রুটি বা ত্রুটি হওয়ার পরেও যদি তারা চালিয়ে যেতে থাকে তবে কোনও সিস্টেমকে একটি ব্যর্থ নিরাপদ সিস্টেম হিসাবে চিহ্নিত করা হয়। তারা কোনও অপারেশন বাতিল করে না এবং ত্রুটিগুলি প্রকাশের পরিবর্তে আড়াল করে না।



জাভাতে আইট্রেটার্স আমাদের সংগ্রহের জিনিসগুলি অতিক্রম করতে দেয়। সংগ্রহটি দিয়ে ফিরে আসা পুনরুদ্ধারকরা হয় দ্রুত ব্যর্থ হন বা প্রকৃতির নিরাপদে ব্যর্থ হন।

ব্যর্থ ফাস্ট আইট্রেটার

জাভাতে দ্রুত পুনরাবৃত্তিকারীরা এটির পুনরাবৃত্তি করার সময় কোনও ধরণের কাঠামোগত পরিবর্তনকে অস্বীকার করে। স্ট্রাকচারাল মডিফিকেশন এর মধ্যে পুনরাবৃত্তি করার সময় সংগ্রহের যে কোনও উপাদান যুক্ত করা, অপসারণ বা আপডেট করা অন্তর্ভুক্ত। পুনরুক্তি প্রক্রিয়া চলাকালীন যদি কাঠামোগতভাবে সংশোধন করা হয় তবে পুনরাবৃত্তিটি একটি সমকালীন মডেফিকেশন এক্সেপশন নিক্ষেপ করে।

তবে, এটি অবশ্যই লক্ষ রাখতে হবে যে যদি কোনও আইট্রে পুনরাবৃত্তকারীগুলির নিজস্ব পদ্ধতি অর্থাৎ অপসারণ () পদ্ধতি ব্যবহার করে সরানো হয় তবে কোনও ব্যতিক্রম ছুঁড়ে দেওয়া হবে না। এটি সম্পূর্ণ নিরাপদ প্রক্রিয়া। নিশ্চিত করো যে তোমার আছে জাভা ইনস্টল করা আপনার সিস্টেমে

ব্যর্থ ফাস্ট আইট্রেটারের উদাহরণ:

আমদানি java.util.HashMap আমদানি java.util.Iterator আমদানি java.util.Map পাবলিক ক্লাস FailFastExample {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {মানচিত্রের মাসের ইনডেক্স = নতুন হাশম্যাপ () মাস ইন্ডেক্স.পুট ('1', 'জানুয়ারী ') মাসেআইডেক্স.পুট (' 2 ',' ফেব্রুয়ারি ') মাসেআইডেক্স.পুট (' 3 ',' মার্চ ') ইটারেটর পুনরাবৃত্তকারী = মাস ইন্ডেক্স.কি.সেট ()। পুনরাবৃত্তকারী () যখন (পুনরাবৃত্ত.হাসনেক্সট ())। সিস্টেম.আউট .println (monthIndex.get (iterator.next ())) // ম্যাপে একটি উপাদান যুক্ত করা // ব্যতিক্রম পরের কল // পরবর্তী () পদ্ধতিতে নিক্ষেপ করা হবে। মাস ইন্ডেক্স.পুট ('4', 'এপ্রিল')}}

আউটপুট:

থ্রেড 'মূল' java.util.ConcurrentModificationsException মধ্যে ব্যতিক্রম

at java.util.HashMap $ HashIterator.nextEntry (অজানা উত্স)

এখন আমাদের এগিয়ে যাওয়া যাক এবং ব্যর্থ নিরাপদ Iterator এক নজর,

নিরাপদ Iterator ব্যর্থ

ব্যর্থ দ্রুত পুনরাবৃত্তকারীদের থেকে পৃথক, ব্যর্থ নিরাপদ পুনরাবৃত্তি পুনরাবৃত্তির প্রক্রিয়া চলাকালীন যদি সংগ্রহটি পরিবর্তন করা হয় তবে কোনও ব্যতিক্রম ছুঁড়ে না। এটি প্রকৃত সংগ্রহের পরিবর্তে সংগ্রহের ক্লোনটিতে পুনরাবৃত্তি হওয়ার কারণে ঘটে। প্রকৃত সংগ্রহে স্ট্রাকচারাল পরিবর্তনগুলি তাদের নজরে যায় না।

যাইহোক, এটি লক্ষ করা উচিত যে সত্যিকারের ফেইল সেফ আইট্রেটারের মতো কোনও জিনিস নেই। এটিকে দুর্বল-সামঞ্জস্যপূর্ণ হিসাবে অভিহিত করা উপযুক্ত হবে। এর সহজ অর্থ যদি পুনরাবৃত্তির প্রক্রিয়া চলাকালীন একটি সংকলন সংশোধন করা হয়, যা পর্যবেক্ষক দেখেন তা দুর্বলভাবে নিশ্চিত হয়। এই আচরণটি বিভিন্ন সংগ্রহের জন্য পৃথক এবং জাভাদোকসে নথিভুক্ত।

নিরাপদ Iterator ব্যর্থ উদাহরণ:

পাবলিক ক্লাস FailSafeExample {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {সমকালীন মানচিত্র মাসিক ইনডেক্স = নতুন কনকন্টারহ্যাশম্যাপ () মাসি ইনডেক্স.পুট ('1', 'জানুয়ারী') মাসিক ইনডেক্স.পুট ('2', 'ফেব্রুয়ারি') মাসেআইডেক্স.পুট ( '3', 'মার্চ') আইট্রেটর ইটারেটর = মাসিআইএনডিএক্স.কিসেট ()। পুনরুক্তিকারী () যখন (পুনরুদ্ধারকারী .হসেক্সট ()) {সিস্টেম.আউট.প্রিন্টলন (মাসি ইনডেক্স.জেট (পুনরুত্পাদনকারী (পূর্ববর্তী))) মাসে ইনডেক্স.পুট ( '4', 'এপ্রিল')}}

আউটপুট:

  • জানুয়ারী
  • ফেব্রুয়ারী
  • মার্চ

অবশেষে এই নিবন্ধে আমরা এই পুনরাবৃত্তকারীদের সাথে তুলনা করব,

পার্থক্য: দ্রুত এবং ব্যর্থ নিরাপদ Iterator

দুটি পুনরাবৃত্তকারীদের মধ্যে প্রয়োজনীয় পার্থক্য নীচে দেওয়া হল:

স্ট্রিং থেকে জাভা নতুন তারিখ
পরামিতি ব্যর্থ ফাস্ট আইট্রেটার নিরাপদ Iterator ব্যর্থ
সমকালীন মডিফিকেশন ব্যতিক্রম নিক্ষেপ করুন

হ্যাঁ, কোনও সংগ্রহের পুনরাবৃত্তির সময় যদি কোনও সংশোধন করা হয় তবে তারা কোকোরমোডেডিফিকেশন এক্সপ্টি-অন ছুঁড়ে দেয়।

না, কোনও সংকলন পুনরাবৃত্ত হওয়ার সময় যদি তারা সংশোধন করা হয় তবে তারা কোনও ব্যতিক্রম ছুঁড়ে না।

সংগ্রহটি ক্লোন করুন

না, তারা উপাদান সংগ্রহ করতে মূল সংগ্রহ ব্যবহার করে।

হ্যাঁ, তারা অনুগ্রহ করতে মূল সংগ্রহের অনুলিপি ব্যবহার করে।

মেমরি ওভারহেড

না, তাদের অতিরিক্ত মেমরির প্রয়োজন নেই।

হ্যাঁ, সংগ্রহটি ক্লোন করতে তাদের অতিরিক্ত মেমরির প্রয়োজন।

উদাহরণ

হ্যাশম্যাপ, ভেক্টর, অ্যারেলিস্ট, হ্যাশসেট

অনুলিপি অনুলিপি

এই পুনরাবৃত্তকারী উভয় জাভা এর বহুমুখী ভাষায় অনন্য এবং অনেক প্রয়োজনীয়। যদিও ব্যর্থ নিরাপদে এর স্বাচ্ছন্দ্যজনক রিং রয়েছে তবে ব্যর্থ দ্রুত পুনরাবৃত্তি শক্তিশালী হিসাবে প্রমাণিত।

এটি এই নিবন্ধের শেষে এনেছে। যদি আপনি আরও জানতে চান তবে পরীক্ষা করে দেখুন লিখেছেন এডুরেকা। এডুরেকার জাভা জে 2 ইই এবং এসওএ প্রশিক্ষণ এবং শংসাপত্রের কোর্সটি আপনাকে জাভা প্রোগ্রামিংয়ে একটি প্রধান সূচনা দেওয়ার জন্য এবং হাইবারনেট ও স্প্রিংয়ের মতো বিভিন্ন জাভা ফ্রেমওয়ার্কের পাশাপাশি আপনাকে মূল এবং উন্নত জাভা উভয় ধারণার জন্য প্রশিক্ষণের জন্য তৈরি করা হয়েছে।

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই 'ব্যর্থ ফাস্ট বনাম ফেল নিরাপদ' ব্লগের মন্তব্য বিভাগে উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।