জাভাতে ব্লকিংকিউ কী এবং এটি কীভাবে কার্যকর করা যায়?

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

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



নীচে এই নিবন্ধে বিষয়গুলি অন্তর্ভুক্ত করা হয়েছে:



জাভাতে ব্লকিংকিউ ইন্টারফেস

জাভা ব্লকিংকিউ জাভা 1.5 তে যুক্ত হওয়া একটি ইন্টারফেস যা সাম্প্রতিক ইউটিলিটি ক্লাসের সাথে যেমন কনকন্টারহ্যাশম্যাপ, কপিঅনউইরাইটআররেলিস্ট, ইত্যাদির ব্লকিংকিউ ইন্টারফেসের অন্তর্ভুক্ত java.util.concurrent প্যাকেজএই ইন্টারফেসটি ব্লকিং সক্রিয় করে প্রবাহ নিয়ন্ত্রণকে বাড়িয়ে তোলে, যদি কোনও থ্রেড খালি সারি চিহ্নিত করার চেষ্টা করে বা একটি সম্পূর্ণ সারি সজ্জিত করার চেষ্টা করে। উভয় ক্ষেত্রেই, এই ইন্টারফেসটি কার্যকর হয়।সহজ কথায়, ধরুন ক ইতিমধ্যে সম্পূর্ণ কাতারে উপাদান যুক্ত করার চেষ্টা করছে। প্রোগ্রামের এই মুহুর্তে, ব্লকিংকুইউতে অনুরোধ করা হবে যা নির্দিষ্ট থ্রেডটিকে অবরুদ্ধ করবে যতক্ষণ না অন্য থ্রেড স্থান তৈরির জন্য সারি প্রকাশ না করে। এটি সম্পূর্ণ কাতারের ছাড়পত্রের কোনও উপাদান (গুলি) ছাড়ার ফলাফল হতে পারে। একইভাবে, ব্লকিংকুইউকে অন্য থ্রেড সন্নিবেশ না করা বা খালিটিতে কোনও উপাদান যুক্ত না করা পর্যন্ত একটি থ্রেড ব্লক করতে অনুরোধ করা হবে কিউ

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



ব্লকিংকিউ - জাভাতে ব্লকিংকিউ - এডুরেকাএই ইন্টারফেস এটি থ্রেড-সেফ হওয়ায় প্রধানত প্রযোজক-ভোক্তাদের মধ্যে ব্যবহার করা হয়।আমার অর্থ হ'ল ব্লকিংকিউ ইন্টারফেসটি এমন একটি সারি তৈরি করতে ব্যবহার করা যেতে পারে যা নির্মাতা এবং গ্রাহক উভয়ই ভাগ করে নিতে পারেন

জাভাতে ব্লকিংকিউয়ের সাথে কাজ করার জন্য প্রথমে আপনাকে এর ধরণের সাথে পরিচিত হতে হবে। এই নিবন্ধের পরবর্তী বিভাগে আমি আপনাকে তাদের সাথে পরিচয় করিয়ে দিই।

জাভাতে ব্লকিংকুইয়ের জন্য কনস্ট্রাক্টরগুলির প্রকার

জাভাতে ব্লকিংকুইউ ইন্টারফেসের জন্য দুটি ধরণের কনস্ট্রাক্টর রয়েছে:



  • আনবাউন্ডেড সারি: এই ধরণের কিউয়ের জন্য, ক্ষমতাটি পূর্ণসংখ্যায় সেট করা হবে MA MAX_VALUE। আনবাউন্ডেড সারি কখনই অবরুদ্ধ হবে না কারণ এটি গতিশীলভাবে বৃদ্ধি পেতে পারে, প্রতিবার যখন কোনও উপাদান এতে .োকানো হয়। আনবাউন্ডেড সারি তৈরি করার জন্য সিনট্যাক্সের নীচে:
ব্লকিংকিউ বিকিউ = নতুন লিঙ্কডব্লকিংডেক ()
  • সীমাবদ্ধ সারি: এই ধরণের কিউয়ের জন্য, আপনার তৈরির সময় আপনার কিউর সক্ষমতাটি পাস করতে হবে অর্থাত একটি হিসাবে নির্মাতা প্যারামিটার আকারটি নির্ধারিত হয়ে গেলে, এটি পরিবর্তন করা যাবে না। নীচে একটি সীমাবদ্ধ সারি তৈরি করার বাক্য গঠন রয়েছে:
ব্লকিংকিউ বিকিউ = নতুন লিংকডব্লকিংডেক (10)

এখন আপনি জাভাতে ব্লকিংকিউ বাস্তবায়নের উপায়গুলির সাথে परिचित হলেন, এর কয়েকটি পদ্ধতি সম্পর্কে আমাকে তালিকাভুক্ত করা যাক।

ব্লকিংকিউ ইন্টারফেসের পদ্ধতি

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

ব্লকিংকিউ বাস্তবায়ন

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

এর জন্য আমি 3 টি ক্লাস তৈরি করব:

  1. এডুপ্রডুসার
  2. এডু কনসুমার
  3. এডুরেকামন

আসুন এখন একে একে এই ক্লাস তৈরি করা যাক।

এডুপ্রোডুসার.জভা

প্যাকেজ এডুরিকা আমদানি java.util.concurrent.BlockingQueue পাবলিক ক্লাস এডুপ্রডুসারটি রান্নেবল-প্রাইভেট ফাইনাল ব্লকিংকুই ক্যু প্রয়োগ করুন @ ওভাররাইড পাবলিক বায়োড রান () {ট্রাই {প্রসেস ()} ক্যাচ (ইন্টারপ্রেডএক্সসেপশন ই) {থ্রেড.ক্রেনটিথ্রেড () ইন্টারপট ()} } বেসরকারী শূন্য প্রক্রিয়া () বিঘ্নিত ধারণাটি ছুড়ে ফেলে {// এর জন্য 10 ইন্টু কাতারে রাখুন (int i = 0 i<10 i++) { System.out.println('[Producer] Add : ' + i) queue.put(i) System.out.println('[Producer] Queue's Remaining Capacity : ' + queue.remainingCapacity()) Thread.sleep(150) } } public EduProducer(BlockingQueue queue) { this.queue = queue } }

এডু কনসুমার.জভা

প্যাকেজ এডুরিকা আমদানি java.util.concurrent.BlockingQueue পাবলিক ক্লাস EduConsumer রান্নেবল-প্রাইভেট ফাইনাল ব্লকিংকুই ক্যু প্রয়োগ করুন @ ওভাররাইড পাবলিক বায়োড রান () {চেষ্টা করুন {যখন (সত্য) {পূর্ণসংখ্যা নেওয়া = ক্যু.টেক () প্রক্রিয়া (গ্রহণ)}} ক্যাচ (বিঘ্নিত ধারণা) {থ্রেড.কন্ট্রেনথ্রেড ()। বিঘ্নিত ()}} বেসরকারী শূন্য প্রক্রিয়া (পূর্ণসংখ্যা গ্রহণ) বিঘ্নিত এক্সপ্রেশন {System.out.println ('[গ্রাহক] সরান:' + গ্রহণ) থ্রেড.স্লিপ (500)} পাবলিক এডু কনসুমার (ব্লকিংকুই কিউ) {this.queue = সারি}}

এডুরেকামন.জভা

package .start () নতুন থ্রেড (নতুন এডু কনসুমার (সারি)) শুরু করুন ()}}

আপনি কোডটি লেখার পরে, নীচের আউটপুটটি পেতে প্রোগ্রামটি চালাও:

[প্রযোজক] যোগ করুন: 0 [গ্রাহক] নিন: 0 [প্রযোজক] সারির অবশিষ্টাংশের ক্ষমতা: 9 [প্রযোজক] যোগ করুন: 1 [প্রযোজক] সারির অবশিষ্টাংশের ক্ষমতা: 9 [প্রযোজক] যোগ করুন: 2 [প্রযোজক] সারির অবশিষ্ট ক্ষমতা: 8 [প্রযোজক ] যোগ করুন: 3 [প্রযোজক] সারির অবশিষ্টাংশের ক্ষমতা: 7 [গ্রাহক] নিন: 1 [প্রযোজক] যোগ করুন: 4 [নির্মাতা] সারির অবশিষ্টাংশের ক্ষমতা: 7 [প্রযোজক] যোগ করুন: 5 [প্রযোজক] সারির অবশিষ্ট ক্ষমতা: 6 [প্রযোজক] যোগ করুন : 6 [প্রযোজক] কাতারের অবশিষ্ট ক্ষমতা: 5 [গ্রাহক] নিন: 2 [উত্পাদক] যোগ করুন: 7 [প্রযোজক] সারির অবশিষ্টাংশের ক্ষমতা: 5 [নির্মাতা] যোগ করুন: 8 [প্রযোজক] সারির অবশিষ্টাংশের ক্ষমতা: 4 [প্রযোজক] যোগ করুন: 9 [উত্পাদক] কাতারের অবশিষ্ট ক্ষমতা: 3 [গ্রাহক] নিন: 3 [গ্রাহক] নিন: 4 [গ্রাহক] নিন: 5 [গ্রাহক] নিন: 6 [গ্রাহক] নিন: 7 [গ্রাহক] নিন: 8 [গ্রাহক] নিন: 9

এটি জাভাতে ব্লকিংকুইয়েতে এই নিবন্ধটির শেষের দিকে নিয়ে আসে। আপনি যদি আরও বিস্তারিতভাবে জাভা শিখতে চান তবে আমাদের দেখুন যেমন.

কিভাবে অ্যাটম পাইথন চালানো

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

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