জাভাতে অপেক্ষা এবং বিজ্ঞপ্তি কী?



জাভাতে অপেক্ষা করুন এবং বিজ্ঞপ্তি হ'ল দুটি চূড়ান্ত পদ্ধতি যা থ্রেডগুলি একে অপরের সাথে যোগাযোগ করতে দেয়। এই নিবন্ধটি আপনাকে বিশদ সহকারে সাহায্য করবে

জাভাতে বৈশিষ্ট্যটি একটি প্রোগ্রামের দুটি বা ততোধিক অংশের একযোগে কার্যকর করতে দেয়। প্রতিটি অংশ একটি থ্রেড হয়। এই থ্রেডগুলিতে প্রায়শই তাদের ক্রিয়াকে সমন্বয় করতে হয়। এটি জাভাতে অপেক্ষা এবং নোটিফাইয়ের মতো কয়েকটি চূড়ান্ত পদ্ধতি ব্যবহার করে করা হয়। এই নিবন্ধটি আপনাকে এই পদ্ধতিগুলি বিস্তারিতভাবে বুঝতে সহায়তা করবে।

আমি নিম্নলিখিত ক্রমে বিষয়গুলি নিয়ে আলোচনা করব:





চল শুরু করি!

থ্রেড সিঙ্ক্রোনাইজেশন কী?

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



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

অপেক্ষা () এবং বিজ্ঞপ্তি () পদ্ধতি কী কী?

মাল্টিথ্রেডিং সমস্যা মোকাবেলায় অপেক্ষা করুন এবং বিজ্ঞপ্তি দেওয়ার মতো পদ্ধতি ব্যবহৃত. অবজেক্ট শ্রেণি এই তিনটি চূড়ান্ত পদ্ধতি ব্যবহার করে যা থ্রেডগুলিকে কোনও সংস্থার লক করা অবস্থার বিষয়ে যোগাযোগ করতে দেয়। এগুলিকে গার্ডেড ব্লকও বলা হয়।

কিভাবে জাভাস্ক্রিপ্ট সতর্কতা লিখতে

অপেক্ষা করুন ()

এই পদ্ধতিটি থ্রেডটির অপেক্ষার জন্য অপেক্ষা করে, যতক্ষণ না অন্য থ্রেড এই অবজেক্টটির জন্য বিজ্ঞপ্তি () এবং নোটিফাইএল () পদ্ধতিগুলি আহ্বান করে। এই অপেক্ষা () পদ্ধতিটি কলিং থ্রেডটিকে একটি লক ছেড়ে যেতে এবং ঘুমাতে যেতে বলে যতক্ষণ না অন্য কোনও থ্রেড একই মনিটরে প্রবেশ করে এবং অবহিত করার জন্য কল দেয় ()। এই পদ্ধতিটি অপেক্ষা করার আগে লকটি প্রকাশ করে এবং অপেক্ষা () পদ্ধতি থেকে ফিরে আসার আগে লকটিকে পুনরায় জিজ্ঞাসা করে।



অপেক্ষা () পদ্ধতিটি সুসংগতকরণ লকের সাথে দৃly়ভাবে সংহত করা হয়েছে। এটি সিঙ্ক্রোনাইজেশন প্রক্রিয়া থেকে সরাসরি উপলভ্য নয় এমন একটি বৈশিষ্ট্য ব্যবহার করে করা হয়।

বাক্য গঠন:

সিঙ্ক্রোনাইজড (লকঅবজেক্ট) {যখন (! শর্ত) {লকঅবজেক্ট.ওয়েট ()} // এখানে পদক্ষেপ নিন}

বর্তমান থ্রেডটি অবশ্যই এটির অবজেক্টের মনিটরের মালিক হতে হবে। এটি কেবল সিঙ্ক্রোনাইজড পদ্ধতি থেকে কল করা উচিত নয়ত এটি ব্যতিক্রম ছুঁড়ে ফেলবে।

জ্ঞাপন করা()

এই পদ্ধতিটি অবহিত করতে ব্যবহৃত হয় এটি কাজ করা প্রয়োজন। এটি একটি থ্রেড জেগেছিল যা ডাকে অপেক্ষা () একই অবজেক্টে পদ্ধতি।

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

বাক্য গঠন:

সিঙ্ক্রোনাইজড (লকঅবজেক্ট) {// প্রতিষ্ঠা_পরিচালনা লকঅবজেক্ট.নোটাইফাই () // প্রয়োজনে কোনও অতিরিক্ত কোড}

সমস্ত বিজ্ঞপ্তি ()

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

কেন এবং কীভাবে জাভাতে অপেক্ষা () এবং বিজ্ঞপ্তি () ব্যবহার করবেন?

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

শর্তটি হ'ল একবার কোনও আইটেম উত্পাদিত হওয়ার পরে, গ্রাহক থ্রেডটি অবহিত করতে হবে এবং একইভাবে, গ্রাহক প্রযোজক থ্রেডকে অবহিত করার পরে। এই আন্ত-থ্রেডযোগাযোগজাভাতে অপেক্ষা এবং বিজ্ঞপ্তি ব্যবহার করে অর্জন করা হয়।

বিঃদ্রঃ : ডাব্লু।আইট এবং নাtify পদ্ধতি অবজেক্ট শ্রেণিতে সংজ্ঞায়িত করা হয়, এবং তাদের অবশ্যই সিঙ্ক্রোনাইজড ব্লকের ভিতরে কল করা উচিত।

উদাহরণ

পাবলিক ক্লাস থ্রেডড 1 {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {থ্রেড 2 বি = নতুন থ্রেড 2 () বি.স্টার্ট () সিঙ্ক্রোনাইজড (খ) {চেষ্টা করুন। System.out.println ('2 সম্পূর্ণ হওয়ার অপেক্ষায় ...' ) বি.ইউইট ()} ক্যাচ (বাধাপ্রাপ্তি ই) () int সিঙ্ক্রোনাইজড (এটি) {এর জন্য (int i = 0 i)<=100 i++) { total += i } notify() }}}

লক্ষ্য করুন যে উপরের উদাহরণে, থ্রেড 2-এর একটি অবজেক্ট, যে খ, সিঙ্ক্রোনাইজ হয়েছে। মূল থ্রেডের মোট মানটি আউটপুট করার আগে এই খ গণনাটি সম্পূর্ণ করে।

আউটপুট:

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

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