জাভাতে থ্রেড ক্লাস এবং চলমানযোগ্য ইন্টারফেসের মধ্যে পার্থক্য

লেখক: Laura McKinney
সৃষ্টির তারিখ: 1 এপ্রিল 2021
আপডেটের তারিখ: 14 মে 2024
Anonim
জাভাতে থ্রেড ক্লাস এবং চলমানযোগ্য ইন্টারফেসের মধ্যে পার্থক্য - প্রযুক্তি
জাভাতে থ্রেড ক্লাস এবং চলমানযোগ্য ইন্টারফেসের মধ্যে পার্থক্য - প্রযুক্তি

কন্টেন্ট


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

আসুন নীচে প্রদর্শিত তুলনা চার্টের সাহায্যে থ্রেড এবং রান্নেবলের মধ্যে কিছু অন্যান্য পার্থক্য পর্যালোচনা করি:

  1. তুলনা রেখাচিত্র
  2. সংজ্ঞা
  3. মূল পার্থক্য
  4. উপসংহার

তুলনা রেখাচিত্র

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


থ্রেড ক্লাস সংজ্ঞা

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

/ * একটি থ্রেড সংজ্ঞায়িত করে / / ক্লাস মিথথ্রেড থ্রেড {/ * থ্রেডের কাজ প্রসারিত * / সার্বজনীন শূন্য রানের () জন্য {(int i = 0; i <10; i ++) {System.Out.ln ("শিশু থ্রেড") ); }} শ্রেনীর মেনথ্রেড {/ * মূল থ্রেডের কাজ * / পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং আর্টস) {মিথথ্রিড এমটি = নতুন মাইথ্রেড (); / * প্রধান থ্রেড চাইল্ড থ্রেড তৈরি করেছে * / এমটি.স্টার্ট (); (int i = 0; i <10; i ++) for System.Out। ("মূল থ্রেড") এর জন্য; }}} / * আউটপুট * / প্রধান থ্রেড প্রধান থ্রেড প্রধান থ্রেড প্রধান থ্রেড শিশু থ্রেড শিশু থ্রেড শিশু থ্রেড শিশু থ্রেড প্রধান থ্রেড শিশু থ্রেড প্রধান থ্রেড প্রধান থ্রেড শিশু থ্রেড প্রধান থ্রেড প্রধান থ্রেড শিশু থ্রেড শিশু থ্রেড প্রধান থ্রেড

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


চলমানযোগ্য ইন্টারফেস সংজ্ঞা

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

/ * একটি থ্রেড সংজ্ঞায়িত * / ক্লাস রান্নেবলথ্রেড থ্রেডের রান্নেবল {/ * জব প্রয়োগ করে / / সার্বজনীন শূন্য রানের () জন্য int (ইন্ট আই = 0; আই <10; আই ++) {সিস্টেম.আউট.লএন ("শিশু থ্রেড") ); }} শ্রেনীর মেনথ্রেড {/ * মূল থ্রেডের চাকরি * / পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং আর্টস) {মিথথ্রিড আরটি = নতুন মাইথ্রেড (); / * মূল থ্রেড চলমানযোগ্য বস্তু তৈরি করেছে * / থ্রেড টি = নতুন থ্রেড (আরটি); / * প্রধান থ্রেড চাইল্ড থ্রেড তৈরি করে এবং চলমান বস্তু * / t.start () কেটে যায়; (int i = 0; i <10; i ++) for System.Out। ("মূল থ্রেড") এর জন্য; }}} / * আউটপুট * / প্রধান থ্রেড প্রধান থ্রেড প্রধান থ্রেড প্রধান থ্রেড শিশু থ্রেড শিশু থ্রেড শিশু থ্রেড শিশু থ্রেড প্রধান থ্রেড শিশু থ্রেড প্রধান থ্রেড প্রধান থ্রেড শিশু থ্রেড প্রধান থ্রেড প্রধান থ্রেড শিশু থ্রেড শিশু থ্রেড প্রধান থ্রেড

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

জাভাতে থ্রেড এবং চলমানযোগ্য মধ্যে মূল পার্থক্য

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

উপসংহার:

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