মূল পার্থক্য – ঘুম বনাম জাভাতে অপেক্ষা করুন
জাভাতে মাল্টিথ্রেডিংয়ের জন্য ঘুম এবং অপেক্ষা দুটি পদ্ধতি ব্যবহার করা হয়। ঘুমের পদ্ধতিটি থ্রেড ক্লাসের অন্তর্গত যখন অপেক্ষা পদ্ধতিটি অবজেক্ট ক্লাসের। জাভাতে ঘুম এবং অপেক্ষার মধ্যে মূল পার্থক্য হল, স্লিপ ব্যবহার করা হয় মিলিসেকেন্ডের নির্দিষ্ট সংখ্যকের জন্য বর্তমান থ্রেডের কার্য সম্পাদন স্থগিত করার জন্য যখন অপেক্ষার পদ্ধতিটি বর্তমান থ্রেডটিকে অপেক্ষা করার জন্য ব্যবহার করা হয় যতক্ষণ না অন্য থ্রেড বিজ্ঞপ্তি আহ্বান করে বা অবজেক্টের জন্য সমস্ত পদ্ধতি অবহিত করুন।
একটি থ্রেড অপারেটিং সিস্টেমে প্রক্রিয়াকরণের ক্ষুদ্রতম একক। এটি একটি প্রোগ্রামের মধ্যে নিয়ন্ত্রণের একক অনুক্রমিক প্রবাহ।থ্রেড হালকা হয়. মাল্টিথ্রেডিং হল একই সময়ে একাধিক থ্রেড চালানোর পদ্ধতি। প্রোগ্রামিং ভাষা যেমন জাভা মাল্টিথ্রেডিং সমর্থন করে। মাল্টিথ্রেডিংয়ের সুবিধা রয়েছে কারণ এটি একাধিক থ্রেড একসাথে চালানোর অনুমতি দেয় এবং থ্রেডগুলি একে অপরের থেকে স্বাধীন। জাভাতে এমন পদ্ধতি রয়েছে যা মাল্টিথ্রেডিংয়ের জন্য ব্যবহার করা যেতে পারে। তাদের মধ্যে দুটি ঘুম এবং অপেক্ষা।
জাভাতে ঘুম কি?
একটি অপারেটিং সিস্টেমে একাধিক প্রক্রিয়া চলছে। একটি প্রক্রিয়া কার্যকরী একটি প্রোগ্রাম. প্রতিটি প্রক্রিয়ার একাধিক থ্রেড থাকতে পারে এবং এই থ্রেডগুলির মধ্যে একটি প্রসঙ্গ পরিবর্তন হয়। জাভাতে, একটি থ্রেড তৈরি করার দুটি উপায় রয়েছে। এটি থ্রেড ক্লাস প্রসারিত করে বা রানেবল ইন্টারফেস বাস্তবায়ন করে। থ্রেড ক্লাসে একটি থ্রেড তৈরি এবং অপারেশন করার জন্য কনস্ট্রাক্টর এবং পদ্ধতি রয়েছে। থ্রেড ক্লাস অবজেক্ট ক্লাস প্রসারিত করে এবং রানযোগ্য ইন্টারফেস প্রয়োগ করে। রানেবল ইন্টারফেসটি যে কোনো শ্রেণীর দ্বারা প্রয়োগ করা উচিত যার দৃষ্টান্তগুলি একটি থ্রেড দ্বারা কার্যকর করার উদ্দেশ্যে করা হয়েছে।যখন থ্রেড কার্যকর হয়, যে কোডটি চালানো উচিত তা রান পদ্ধতির ভিতরে লেখা হয়। যে থ্রেডটি চালানো উচিত তা থ্রেড নির্ধারণকারী দ্বারা নির্বাচন করা হয়। একটি একক প্রক্রিয়ায় শুধুমাত্র একটি থ্রেড চলে৷
একটি থ্রেড বিভিন্ন ধাপের মধ্য দিয়ে যায়। থ্রেড ক্লাসের একটি অবজেক্ট তৈরি করার পর, প্রোগ্রামার স্টার্ট মেথড চালু করতে পারে। সেই পদ্ধতিটি চালু করার আগে, থ্রেডটিকে নতুন অবস্থায় বলা হয়। থ্রেড সময়সূচী চালানোর জন্য একটি থ্রেড নির্বাচন করে। যদি থ্রেডটি এখনও থ্রেড শিডিউলারের দ্বারা নির্বাচিত না হয় তবে যদি স্টার্ট মেথড চালু করা হয়, তাহলে থ্রেডটি চালানোর যোগ্য অবস্থায় থাকে। থ্রেড শিডিউলার কার্যকর করার জন্য থ্রেড নির্বাচন করার পরে, এটি চলমান অবস্থায় স্থানান্তরিত হয়। যদি থ্রেডটি জীবিত থাকে কিন্তু বর্তমানে চালানোর যোগ্য না হয়, তাহলে এটি অ-চালিত বা অবরুদ্ধ অবস্থায় রয়েছে। রান পদ্ধতি শেষ হওয়ার পরে, থ্রেডটি সমাপ্ত অবস্থায় চলে যায়। এগুলি হল থ্রেড জীবনচক্রের প্রধান পর্যায়গুলি৷
বিভিন্ন কাজ সম্পাদন করার জন্য থ্রেড ক্লাসে বিভিন্ন পদ্ধতি উপলব্ধ রয়েছে।ঘুমের পদ্ধতিটি নির্দিষ্ট সময়ের জন্য ঘুমানোর পদ্ধতি ব্যবহার করা হয়। ঘুম পদ্ধতির সিনট্যাক্স হল পাবলিক ভ্যাইড স্লিপ (লং মিলিসেকেন্ড) থ্রোস ইন্টারপ্টেড এক্সেপশন। এটি একটি নির্দিষ্ট সংখ্যক মিলিসেকেন্ডের জন্য বর্তমানে কার্যকর করা থ্রেডকে অস্থায়ীভাবে সম্পাদন বন্ধ করে দেয়। যদি অন্য থ্রেড বর্তমান থ্রেডে বাধা দেয়, এই ব্যতিক্রমটি নিক্ষেপ করা হলে বর্তমান থ্রেডের বিঘ্নিত স্থিতি সাফ হয়ে যায়।
চিত্র 01: ঘুমের পদ্ধতির সাথে জাভা প্রোগ্রাম
উপরের প্রোগ্রাম অনুসারে, রান পদ্ধতিতে কোড রয়েছে যা কার্যকর করা উচিত। মূল প্রোগ্রামে, ExampleThread1-এর দুটি অবজেক্ট তৈরি করা হয় এবং সেগুলির উপর শুরু করার পদ্ধতিগুলি চালু করা হয়। এটি রান পদ্ধতির ভিতরে কোড চালানোর অনুমতি দেবে। একবারে শুধুমাত্র একটি থ্রেড কার্যকর করে। থ্রেড দিয়ে।ঘুম (1000); প্রথম থ্রেডটিকে 1000 মিলিসেকেন্ডের জন্য এক্সিকিউশন বন্ধ করার অনুমতি দেবে। যখন একটি থ্রেড ঘুমন্ত থাকে, থ্রেড শিডিউলকারী অন্য থ্রেডটি তুলে নেয়।
জাভাতে অপেক্ষা কি?
একাধিক থ্রেড একটি শেয়ার করা সম্পদ অ্যাক্সেস করতে পারে। এটি একটি ভুল আউটপুট তৈরি করতে পারে। থ্রেড সিঙ্ক্রোনাইজেশন ভাগ করা সম্পদ অ্যাক্সেস করার জন্য শুধুমাত্র একটি থ্রেড তৈরি করতে ব্যবহার করা যেতে পারে। নিম্নরূপ একটি পরিস্থিতি অনুমান. যদি, t1 এবং t2 হিসাবে দুটি থ্রেড থাকে, t1 Text1.txt নামক একটি টেক্সট ফাইলে মান সংরক্ষণ করা শুরু করে। যখন t1 ফেরত আসে তখন সেই মানগুলি অন্য কিছু গণনার জন্য ব্যবহার করা হবে। t1 রিটার্ন করার আগে t2 শুরু হলে, t2 টি 1 দ্বারা সংরক্ষিত মান পরিবর্তন করতে পারে। এটি t1 একটি ভুল আউটপুট প্রদান করতে পারে। সিঙ্ক্রোনাইজেশনের সাহায্যে, যখন t1 Text1.txt ফাইল ব্যবহার করা শুরু করে, সেই ফাইলটি লক করা যায়, তাই এটি শুধুমাত্র t1 দ্বারা অ্যাক্সেসযোগ্য। t2 এটি পরিবর্তন করতে পারে না যতক্ষণ না t1 সেই পাঠ্য ফাইলটি অ্যাক্সেস করার জন্য লকটি প্রকাশ করে। কাজটি সম্পন্ন হলে t1 লকটি ছেড়ে দিতে পারে। লকটি মনিটর নামেও পরিচিত।
থ্রেড সিঙ্ক্রোনাইজেশন আন্তঃ-থ্রেড যোগাযোগের মাধ্যমে অর্জন করা যেতে পারে। একটি সমালোচনামূলক বিভাগ হল একটি কোড সেগমেন্ট যা ভাগ করা সম্পদ অ্যাক্সেস করে। আন্তঃ-থ্রেড যোগাযোগে, একটি থ্রেড তার সমালোচনামূলক বিভাগে চলমান বিরতি দেওয়া হয়, এবং অন্য একটি থ্রেড কার্যকর করার জন্য একই জটিল বিভাগে প্রবেশ করার অনুমতি দেওয়া হয়। এটি অপেক্ষা, অবহিত এবং সমস্ত পদ্ধতি অবহিত করে প্রয়োগ করা হয়। তারা অবজেক্ট ক্লাসের অন্তর্গত। অপেক্ষা পদ্ধতিটি বর্তমান থ্রেডটিকে লকটি প্রকাশ করার অনুমতি দেওয়ার জন্য ব্যবহৃত হয় এবং অবজেক্টের জন্য অন্য থ্রেড নোটিফাই বা notifyAll পদ্ধতির আহ্বান না করা পর্যন্ত অপেক্ষা করুন। বিজ্ঞপ্তি পদ্ধতিটি একটি একক থ্রেড জাগানোর জন্য ব্যবহৃত হয় যা লকের জন্য অপেক্ষা করছে। বিজ্ঞপ্তিটি সমস্ত থ্রেডগুলিকে জাগিয়ে তোলে যা লকটিতে অপেক্ষা করছে৷
চিত্র 02: ক্যালকুলেটর ক্লাস
চিত্র 03: প্রধান পদ্ধতি
ক্যালকুলেটর ক্লাস থ্রেডকে প্রসারিত করে। সিঙ্ক্রোনাইজড ব্লকটি রান পদ্ধতির ভিতরে রয়েছে। লুপ এবং নোটিফাই পদ্ধতিটি সিঙ্ক্রোনাইজড ব্লকের ভিতরে রয়েছে। মূল পদ্ধতির অভ্যন্তরে, একটি থ্রেডের একটি উদাহরণ তৈরি করা হয়েছে এবং সেই উদাহরণে স্টার্ট পদ্ধতি বলা হয়। মূল পদ্ধতিটি থ্রেডটি একটি বিজ্ঞপ্তি না দেওয়া পর্যন্ত অপেক্ষা করবে। প্রোগ্রামটি চালানোর সময়, মূল পদ্ধতিটি রান পদ্ধতির সম্পূর্ণ নির্বাহ না হওয়া পর্যন্ত অপেক্ষা করে এবং বিজ্ঞপ্তি পদ্ধতির জন্য অপেক্ষা করে। একবার বিজ্ঞপ্তি পদ্ধতিটি কল করা হলে, প্রধান পদ্ধতিটি অপেক্ষা করা বন্ধ করে এবং বাকি কোডটি কার্যকর করা শুরু করে। ক্যালকুলেটর থ্রেড সম্পূর্ণ না হওয়া পর্যন্ত প্রধান অপেক্ষা করছে। অবশেষে, যোগফলের ফলাফল মুদ্রিত হয়।
যদি কোন সিঙ্ক্রোনাইজড ব্লক না থাকে এবং যদি প্রধান পদ্ধতিতে নিচের মতো একটি কোড থাকে, তাহলে এটি আউটপুটকে শূন্য হিসেবে দেবে কারণ এটি অন্য থ্রেড সম্পূর্ণ হওয়ার জন্য অপেক্ষা করছে না।
ক্যালকুলেটর t1=নতুন ক্যালকুলেটর ();
t1. শুরু ();
System.out.println (t1.sum);
জাভাতে ঘুম এবং অপেক্ষার মধ্যে মিল কী?
ঘুম এবং অপেক্ষা উভয়ই পদ্ধতি যা জাভাতে মাল্টিথ্রেডিং প্রয়োগ করার সময় ব্যবহার করা যেতে পারে
জাভাতে ঘুম এবং অপেক্ষার মধ্যে পার্থক্য কী?
ঘুম বনাম জাভাতে অপেক্ষা করুন |
|
স্লিপ মেথড বর্তমান থ্রেডকে নির্দিষ্ট সংখ্যক মিলিসেকেন্ডের জন্য এক্সিকিউশন স্থগিত করে দেয়, সিস্টেম টাইমার এবং শিডিউলারের নির্ভুলতা এবং নির্ভুলতা সাপেক্ষে। | অপেক্ষা পদ্ধতির কারণে বর্তমান থ্রেডটিকে অপেক্ষা করতে হবে যতক্ষণ না অন্য থ্রেড অবজেক্টের জন্য বিজ্ঞপ্তি বা notifyAll পদ্ধতি আহ্বান করে। |
অ্যাসোসিয়েশন উইথ লক | |
স্লিপ মেথড সিঙ্ক্রোনাইজেশনের সময় কোনো বস্তুর লক রিলিজ করে না। | অপেক্ষা পদ্ধতি সিঙ্ক্রোনাইজেশনের সময় লকটি প্রকাশ করে। |
সম্পাদনের পদ্ধতি | |
ঘুমের পদ্ধতি বর্তমান থ্রেডে কার্যকর করা হয়েছে। | অবজেক্টে অপেক্ষা করার পদ্ধতি বলা হয়৷ |
অ্যাসোসিয়েটেড ক্লাস | |
ঘুম হল থ্রেড ক্লাসের একটি পদ্ধতি। | অপেক্ষা হল অবজেক্ট ক্লাসের একটি পদ্ধতি। |
সম্পূর্ণতা | |
নিদিষ্ট সময় শেষ হওয়ার পর ঘুমের প্রক্রিয়া সম্পন্ন হয়। | অপেক্ষার পদ্ধতিটি কল করে বিঘ্নিত হয় নোটিফাই বা নোটিফাই সব পদ্ধতি। |
সারাংশ – ঘুম বনাম জাভাতে অপেক্ষা করুন
অপারেটিং সিস্টেমে একাধিক প্রক্রিয়া চলছে। প্রতিটি প্রক্রিয়ার একাধিক থ্রেড থাকতে পারে। একটি থ্রেড একটি অপারেটিং সিস্টেমে প্রক্রিয়াকরণের ক্ষুদ্রতম একক। জাভা প্রোগ্রামিং ভাষা মাল্টিথ্রেডিং সমর্থন করে। এটি একসাথে একাধিক থ্রেড চালানোর অনুমতি দেয়। ঘুম এবং অপেক্ষা দুটি পদ্ধতি যা মাল্টি-থ্রেডিং প্রয়োগ করার সময় ব্যবহার করা যেতে পারে। জাভাতে ঘুম এবং অপেক্ষার মধ্যে পার্থক্য হল, স্লিপ ব্যবহার করা হয় মিলিসেকেন্ডের নির্দিষ্ট সংখ্যকের জন্য বর্তমান থ্রেডের কার্য সম্পাদন স্থগিত করতে যখন অপেক্ষার পদ্ধতিটি বর্তমান থ্রেডটিকে অপেক্ষা করার জন্য ব্যবহার করা হয় যতক্ষণ না অন্য একটি থ্রেড বিজ্ঞপ্তি বা notifyAll আহ্বান করে। বস্তুর জন্য পদ্ধতি।