"হ্যালো, অ্যামিগো! আমি দেখছি আপনি থ্রেড সম্পর্কে শেখার ক্ষেত্রে দারুণ উন্নতি করছেন।"

"সব পরে এটা এত কঠিন ছিল না।"

দারুণ! আজ আপনার কাছে একটি সহজ পাঠ আছে, এবং বিষয় হল যোগদান পদ্ধতি।

নিম্নলিখিত পরিস্থিতি কল্পনা করুন: প্রধান থ্রেড কিছু কাজ সম্পাদন করার জন্য একটি চাইল্ড থ্রেড তৈরি করেছে। সময় অতিবাহিত হয়, এবং এখন প্রধান থ্রেড শিশু থ্রেড দ্বারা সঞ্চালিত কাজের ফলাফল প্রয়োজন। কিন্তু চাইল্ড থ্রেড এখনো তার কাজ শেষ করেনি। প্রধান থ্রেড কি করা উচিত?

ভাল প্রশ্ন. প্রধান থ্রেড কি করা উচিত?

" জইন মেথড এর জন্যই। এটি আমাদের একটি থ্রেডকে অপেক্ষা করতে দেয় যখন অন্য থ্রেড তার কাজ শেষ করে:"

কোড বর্ণনা
class Printer implements Runnable
{
private String name;
public Printer(String name)
{
this.name = name;
}
public void run()
{
System.out.println("I’m " + this.name);
}
}
ক্লাস যা রানেবল ইন্টারফেস প্রয়োগ করে।
public static void main(String[] args)
{
Printer printer1 = new Printer("Nick");
Thread thread1 = new Thread(printer1);
thread1.start();

thread1.join();
}
প্রধান থ্রেড একটি চাইল্ড থ্রেড তৈরি করে – থ্রেড1

তারপর এটি thread1 .start();

এবং তারপর এটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করে – thread1.join();

একটি থ্রেড দ্বিতীয় থ্রেডের থ্রেড অবজেক্টে যোগদান পদ্ধতিকে কল করতে পারে । ফলস্বরূপ, প্রথম থ্রেড (যাকে পদ্ধতি বলা হয়) দ্বিতীয় থ্রেড (যার অবজেক্টের যোগ পদ্ধতি বলা হয়েছিল) শেষ না হওয়া পর্যন্ত তার কাজ বন্ধ করে দেয়।

আমাদের এখানে দুটি জিনিসের মধ্যে পার্থক্য করতে হবে: আমাদের একটি থ্রেড রয়েছে (একটি পৃথক কার্যকর পরিবেশ) এবং আমাদের একটি থ্রেড অবজেক্ট রয়েছে।

"এটাই?"

"হ্যাঁ."

"কিন্তু কেন আমাদের একটি থ্রেড তৈরি করতে হবে এবং তারপরে এটি সম্পূর্ণ হওয়ার জন্য অবিলম্বে অপেক্ষা করতে হবে?"

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

"বুঝেছি."