"এখানে একটি নতুন এবং আকর্ষণীয় বিষয়।"

"এটা দেখা যাচ্ছে যে আপনি বিভিন্ন মোডে থ্রেড শুরু করতে পারেন।"

"একটি স্ট্যান্ডার্ড প্রোগ্রাম (শুধুমাত্র একটি থ্রেড সহ) যখন মূল থ্রেড তার কাজ শেষ করে তখন এটি চালানো বন্ধ করে দেয়। মূল থ্রেডটি কার্যকর করা শেষ করে, প্রোগ্রামটি বন্ধ হয়ে যায় এবং JVM তার মেমরি মুক্ত করে।"

"যদি আমরা একটি চাইল্ড থ্রেড চালু করি, মূল থ্রেড শেষ হয়ে গেলেও প্রোগ্রামটি চলতে থাকে। অন্তত একটি চলমান থ্রেড না থাকা পর্যন্ত JVM বন্ধ হয় না। একবার সমস্ত চলমান থ্রেড শেষ হয়ে গেলে, প্রোগ্রামটি বন্ধ হয়ে যায়।"

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

"প্রোগ্রামটি চলাকালীন এই পরিষেবা থ্রেডগুলির প্রয়োজন হয়, তবে সেগুলি নিজেরাই প্রয়োজন হয় না।"

"হ্যাঁ, বুঝেছি।"

"জাভা আপনাকে ডেমন হিসাবে একটি থ্রেড চালাতে দেয় । এই ধরনের থ্রেডগুলি অন্যদের মতোই কাজ করে, কিন্তু যদি একটি প্রোগ্রামের সমস্ত নন-ডেমন থ্রেড বন্ধ হয়ে যায় এবং শুধুমাত্র ডেমন থ্রেড বাকি থাকে, JVM প্রোগ্রামটি বন্ধ করে দেবে।"

"সুতরাং একটি 'পরিষেবা' থ্রেড ঘোষণা করার মানে হল যে প্রোগ্রামটি বন্ধ হয়ে গেলে এটি বিবেচনা করা হয় না। এটাই কি সব?"

"উহহহ... ওয়েল, আপনি নিশ্চিত যে ছোট এবং মিষ্টি বলেছেন. অগত্যা, আমি কি আপনাকে বলতে চেয়েছিলাম."

"সংক্ষিপ্ততা একটি প্রতিভা। এবং প্রতিভাবান রোবটরা সবকিছুতেই প্রতিভাবান।"

"কোন প্রশ্ন?"

"আপনি কিভাবে একটি ডেমন হিসাবে একটি থ্রেড শুরু করবেন? কিছু DaemonThread ক্লাস থেকে উত্তরাধিকারী?"

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

উদাহরণ:
Thread thread = new LoggerThread();
thread.setDaemon(true);
thread.start();

"এবং এটাই?"

"হ্যাঁ."

"আমি আবারও একটি থ্রেড তৈরি এবং শুরু করার প্রক্রিয়ার দিকে আপনার দৃষ্টি আকর্ষণ করতে চাই।"

"একটি থ্রেড অবজেক্ট তৈরি করা একটি থ্রেড তৈরি করে না। একটি থ্রেড অবজেক্ট একটি থ্রেড নয়। JVM একটি থ্রেড তৈরি করে যখন start() পদ্ধতিটি বলা হয়। একটি থ্রেড একটি বিশেষ JVM অবজেক্ট যা আপনাকে একটি থ্রেড সম্পর্কে তথ্য অ্যাক্সেস করতে দেয় এবং দেয়। আপনি এটির উপর একটু নিয়ন্ত্রণ করেন।"

"আমি দেখছি। ধন্যবাদ, এলি।"