"হ্যালো, অ্যামিগো! এখানে একটি আকর্ষণীয় প্রশ্ন যা আপনি ইতিমধ্যেই করেছেন বা শীঘ্রই করবেন। আপনি কীভাবে একটি চলমান থ্রেড বন্ধ করবেন? "

ধরা যাক ব্যবহারকারী প্রোগ্রামটিকে "ইন্টারনেট থেকে একটি ফাইল ডাউনলোড করতে" বলে। প্রধান থ্রেড এই কাজের জন্য একটি পৃথক চাইল্ড থ্রেড তৈরি করে, এবং এটিকে একটি বস্তু পাস করে যার রান পদ্ধতিতে ফাইলটি ডাউনলোড করার জন্য সমস্ত প্রয়োজনীয় ক্রিয়া রয়েছে।

কিন্তু হঠাৎ ব্যবহারকারী তার মন পরিবর্তন. তিনি ফাইলটি ডাউনলোড করতে চান না। কিভাবে আমরা একটি কাজ বাতিল এবং থ্রেড বন্ধ?

"হ্যাঁ, বলুন কিভাবে?"

" আমরা পারি না। এটি সবচেয়ে সাধারণ এবং সবচেয়ে সঠিক উত্তর। আপনি একটি থ্রেড বন্ধ করতে পারবেন না। শুধুমাত্র এটি নিজেকে থামাতে পারে। "

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

"সেটা করার সেরা উপায় কি?"

"আপনি কিছু ভেরিয়েবল যোগ করতে পারেন, যেমন একটি বুলিয়ান । যদি এটি সত্য হয় , থ্রেড চলে। যদি এটি মিথ্যা হয়  , তাহলে থ্রেডটি বন্ধ করা উচিত। যেমন, উদাহরণস্বরূপ:"

কোড বর্ণনা
class Clock implements Runnable
{
public void run()
{
while (true)
{
Thread.sleep(1000);
System.out.println("Tick");

if (!ClockManager.isClockRun)
return;
}
}
}

ক্লক ক্লাস চিরতরে সেকেন্ডে একবার কনসোলে "টিক" লিখে

যদি ClockManager.isClockRun মিথ্যা হয়, রান পদ্ধতি শেষ হয়।

class ClockManager
{
public static boolean isClockRun = true;
public static void main(String[] args)
{
Clock clock = new Clock();
Thread clockThread = new Thread(clock);
clockThread.start();

Thread.sleep(10000);
isClockRun = false;
}

}
প্রধান থ্রেড একটি শিশু থ্রেড (ঘড়ি) শুরু করে যা চিরতরে চালানো উচিত

10 সেকেন্ড অপেক্ষা করুন এবং ঘড়িটি শেষ হওয়ার জন্য একটি সংকেত দিন।

মূল থ্রেড তার কাজ সম্পন্ন করে।

ঘড়ির কাঁটা তার কাজ শেষ করে।

"আমাদের যদি বেশ কয়েকটি থ্রেড থাকে তবে কী হবে?"

"প্রতিটি থ্রেডের জন্য এই ধরনের একটি ভেরিয়েবল থাকা সবচেয়ে ভালো। এটি সরাসরি ক্লাসে যোগ করা সবচেয়ে সুবিধাজনক। আপনি সেখানে একটি বুলিয়ান isRun ভেরিয়েবল যোগ করতে পারেন। তবে, একটি বুলিয়ান isCancel ভেরিয়েবল যোগ করা ভালো যেটা যদি কাজটি সঠিক হয় তাহলে বাতিল।"

কোড বর্ণনা
class Clock implements Runnable
{
private boolean isCancel = false;

public void cancel()
{
this.isCancel = true;
}

public void run()
{
while (!isCancel)
{
Thread.sleep(1000);
System.out.println("Tick");
}
}
}
ক্লক ক্লাসটি কনসোলে সেকেন্ডে একবার "টিক" শব্দটি লিখবে যতক্ষণ না isCancel মিথ্যা।

যখন isCancel সত্য হয়ে যায়, রান পদ্ধতিটি বন্ধ হয়ে যায়।

public static void main(String[] args)
{
Clock clock = new Clock();
Thread clockThread = new Thread(clock);
clockThread.start();

Thread.sleep(10000);
clock.cancel();
}
প্রধান থ্রেড একটি শিশু থ্রেড (ঘড়ি) শুরু করে যা চিরতরে চালানো উচিত

10 সেকেন্ড অপেক্ষা করুন এবং  বাতিল পদ্ধতিতে কল করে কাজটি বাতিল করুন।

মূল থ্রেড তার কাজ সম্পন্ন করে।

ঘড়ির কাঁটা তার কাজ শেষ করে।

"আমি এটা মাথায় রাখব। ধন্যবাদ, এলি।"