Thread
🔹 Program কী?
Program হলো কিছু নির্দেশনার (instructions) সমষ্টি, যা একটি ফাইল আকারে হার্ডডিস্কে সংরক্ষিত থাকে।
👉 সহজভাবে:
Program = লেখা কোড (এখনো চালু হয়নি)
🧩 উদাহরণ:
ধরুন আপনার কম্পিউটারে একটি অ্যাপ আছে — Calculator.exe
এই ফাইলটি নিজে নিজে কিছু করছে না, শুধু হার্ডডিস্কে আছে।
➡️ এটিই একটি Program
🔹 Process কী?
যখন কোনো Program কে চালানো হয়, তখন সেটি মেমোরিতে লোড হয় এবং কাজ শুরু করে—তখন সেটাকে বলে Process।
👉 সহজভাবে:
Process = চলমান Program
🧩 উদাহরণ:
আপনি যখন Calculator অ্যাপটি ডাবল ক্লিক করলেন
➡️ তখন Calculator.exe একটি Process হয়ে গেল
➡️ এটি RAM, CPU ব্যবহার করছে
একই Program একাধিক Process হতে পারে।
📌 যেমন:
Chrome.exe (Program)
আপনি ২টি Chrome উইন্ডো খুললেন
➡️ ২টি আলাদা Process
🔹 Thread কী?
Thread হলো একটি Process-এর ভিতরের সবচেয়ে ছোট কাজের একক।
একটি Process-এর ভিতরে এক বা একাধিক Thread থাকতে পারে।
👉 সহজভাবে:
Thread = Process-এর ভেতরের ছোট ছোট কাজ
🧩 উদাহরণ:
ধরুন আপনি Chrome ব্যবহার করছেন—
একই সময়ে:
একটি ট্যাবে YouTube ভিডিও চলছে
অন্য ট্যাবে ফাইল ডাউনলোড হচ্ছে
আরেক ট্যাবে ওয়েবসাইট লোড হচ্ছে
➡️ Chrome একটি Process
➡️ এই প্রতিটি কাজ আলাদা আলাদা Thread
সব Thread একই Process-এর মেমোরি শেয়ার করে।
🔁 তুলনা করে এক নজরে
| বিষয় | Program | Process | Thread |
|---|---|---|---|
| অবস্থা | স্থির (Stored) | চলমান | চলমান |
| অবস্থান | হার্ডডিস্ক | RAM | RAM |
| কাজ | কোড | কোড চালানো | ছোট কাজ |
| সংখ্যা | এক | একাধিক হতে পারে | একাধিক হতে পারে |
🧠 বাস্তব জীবনের উদাহরণ (খুব সহজ)
ধরুন একটি রেস্টুরেন্ট—
📘 Program → রেসিপি বই
👨🍳 Process → রান্না চলছে
🍳 Thread → সবজি কাটা, রান্না করা, পরিবেশন (সব একসাথে)
*** in each java code , there is a default function = main function and there is a default thread named main thread .
✔️ main() function নিয়ে
👉 সব Java কোডে main() function থাকে — এটা ঠিক না
সঠিক কথা হলো:
যে Java প্রোগ্রামটি সরাসরি রান করা হয়,
👉 সেখানে অবশ্যই একটিmain()method থাকতে হবেকিন্তু সব Java class-এ
main()থাকা বাধ্যতামূলক নয়
📌 উদাহরণ:
Utility class
Model / POJO class
Android app
Library class
➡️ এগুলোতে main() থাকে না
✔️ Main Thread নিয়ে
👉 Java প্রোগ্রাম রান হলেই একটি default thread তৈরি হয়
এই কথাটা পুরোপুরি ঠিক ✅
JVM যখন
main()method কল করেতখন সে নিজে থেকেই একটি Thread তৈরি করে
এই Thread-এর নাম হলো Main Thread
🔁 তাহলে সঠিকভাবে বলা হলে—
যে Java class রান করা হয়, সেখানে
main()method থাকে এবং JVM সেইmain()method চালানোর জন্য একটি default thread তৈরি করে, যাকে Main Thread বলা হয়।
🧠 সহজ উদাহরণ
public class Test {
public static void main(String[] args) {
fun1();
fun2();
}
}
এখানে—
main()→ entry pointJVM → Main Thread তৈরি করেছে
fun1()ওfun2()→ Main Thread-এই চলছে
📌 মনে রাখার জন্য (Exam Tip)
main()method → Program শুরু করার জায়গাMain Thread → Program-এর প্রথম Thread
Extra Thread → Developer তৈরি করে (
Thread/Runnable)
✅ Final Verdict
| Statement | সঠিক / ভুল |
|---|---|
প্রতিটি Java code-এ main() থাকে | ❌ ভুল |
রানযোগ্য Java প্রোগ্রামে main() থাকে | ✅ সঠিক |
| JVM default main thread তৈরি করে | ✅ সঠিক |
আপনি চাইলে আমি এটা ১–২ লাইনের exam answer, diagram, বা multi-thread example হিসেবেও দেখাতে পারি।
*** suppose there is a java code named test.java . is this file there are 2 function fun1,fun2,fun3 . these runs one by one .
🔹 Program কোনটা?
👉 test.java ফাইলটি নিজে নিজে একটি Program না
কারণ:
test.javaহলো source codeJVM সরাসরি
.javaফাইল চালায় না
তাহলে Program কোনটা?
যখন আপনি compile করেন—
javac test.java
তখন তৈরি হয়:
test.class
➡️ test.class (bytecode)-ই হলো আসল Program
➡️ এটি হার্ডডিস্কে থাকে, এখনো চলমান নয়
🔹 Process কোনটা?
যখন আপনি এই Program রান করেন—
java Test
তখন যা হয়:
JVM শুরু হয়
test.classমেমোরিতে লোড হয়CPU, RAM ব্যবহার শুরু হয়
➡️ এই পুরো চলমান অবস্থাটাই হলো Process
📌 এক কথায়:java Test কমান্ড চালানোর পর যা চলছে = Process
🔹 Thread কোনটা?
Java-তে প্রতিটি Process-এর সাথে অন্তত একটি Thread থাকে
যাকে বলা হয় Main Thread
আপনার কোডে:
fun1();
fun2();
fun3();
এই তিনটি function—
➡️ একই Thread (Main Thread)-এর ভিতরে
➡️ একটার পর একটা (sequentially) রান করছে
তাই এখানে—
Thread সংখ্যা = ১টি
Thread নাম = Main Thread
🔁 এক লাইনে বুঝি
| বিষয় | এই উদাহরণে |
|---|---|
| Program | test.class |
| Process | JVM-এ চলমান java Test |
| Thread | Main Thread |
🧠 Flow আকারে বুঝি
test.java (source code)
↓ compile
test.class (Program)
↓ run
JVM started → Process
↓
Main Thread
↓
fun1()
↓
fun2()
↓
fun3()
⚠️ গুরুত্বপূর্ণ নোট
আপনার কোডে যেহেতু—
কোনো
Threadclassবা
Runnableবা
start()
ব্যবহার করা হয়নি
👉 তাই এখানে Multi-threading নেই
সব function একই Thread-এ একটার পর একটা চলছে।
Example :
🌐 Chrome & Tabs উদাহরণ
🔹 Program কোনটা?
👉 Chrome browser (chrome.exe)
এটি হার্ডডিস্কে ইনস্টল করা থাকে
এখনো চলমান না থাকলে শুধু একটি Program
🔹 Process কোনটা?
👉 আপনি যখন Chrome ওপেন করেন
Chrome RAM ও CPU ব্যবহার শুরু করে
OS একটি বা একাধিক Process তৈরি করে
➡️ চলমান Chrome = Process
📌 Chrome সাধারণত:
Browser Process
Renderer Process
GPU Process
আলাদা আলাদা Process ব্যবহার করে (stability ও security এর জন্য)
🔹 Thread কোনটা?
👉 প্রতিটি Process-এর ভিতরে অনেকগুলো Thread থাকে
একটি Tab-এর ভিতরে চলা কাজগুলো যেমন—
ওয়েবপেজ লোড
JavaScript রান
ভিডিও প্লে
ফাইল ডাউনলোড
➡️ এগুলো সবই Thread
🧠 সহজ করে এক লাইনে
| বিষয় | Chrome উদাহরণ |
|---|---|
| Program | Chrome browser (chrome.exe) |
| Process | Running Chrome |
| Thread | Tab-এর ভেতরের কাজ |
🔁 বাস্তব চিত্র (Mental Diagram)
Chrome Program
↓ open
Chrome Process
↓
Tab 1 → Thread (YouTube)
Tab 2 → Thread (Gmail)
Tab 3 → Thread (Download)
⚠️ Important Note (Exam-ready)
Tab ≠ Thread (সবসময় না)
একটি Tab-এর জন্য একাধিক Thread থাকতে পারে
আবার কিছু Tab আলাদা Process-এও চলতে পারে
কিন্তু concept বোঝার জন্য:
👉 Tab = Thread ধরে নেওয়া যায়
✅ সংক্ষেপে (Exam Answer)
Chrome → Program
Running Chrome → Process
Chrome Tab → Thread