Header Ads

Header ADS

Thread

🔹 Program কী?

Program হলো কিছু নির্দেশনার (instructions) সমষ্টি, যা একটি ফাইল আকারে হার্ডডিস্কে সংরক্ষিত থাকে।

👉 সহজভাবে:
Program = লেখা কোড (এখনো চালু হয়নি)

🧩 উদাহরণ:

ধরুন আপনার কম্পিউটারে একটি অ্যাপ আছে — Calculator.exe
এই ফাইলটি নিজে নিজে কিছু করছে না, শুধু হার্ডডিস্কে আছে।
➡️ এটিই একটি Program


🔹 Process কী?

যখন কোনো Program কে চালানো হয়, তখন সেটি মেমোরিতে লোড হয় এবং কাজ শুরু করে—তখন সেটাকে বলে Process

👉 সহজভাবে:
Process = চলমান Program

🧩 উদাহরণ:

আপনি যখন Calculator অ্যাপটি ডাবল ক্লিক করলেন
➡️ তখন Calculator.exe একটি Process হয়ে গেল
➡️ এটি RAM, CPU ব্যবহার করছে

একই Program একাধিক Process হতে পারে।

📌 যেমন:

  1. Chrome.exe (Program)

  2. আপনি ২টি Chrome উইন্ডো খুললেন
    ➡️ ২টি আলাদা Process


🔹 Thread কী?

Thread হলো একটি Process-এর ভিতরের সবচেয়ে ছোট কাজের একক।
একটি Process-এর ভিতরে এক বা একাধিক Thread থাকতে পারে।

👉 সহজভাবে:
Thread = Process-এর ভেতরের ছোট ছোট কাজ

🧩 উদাহরণ:

ধরুন আপনি Chrome ব্যবহার করছেন—

একই সময়ে:

  1. একটি ট্যাবে YouTube ভিডিও চলছে

  2. অন্য ট্যাবে ফাইল ডাউনলোড হচ্ছে

  3. আরেক ট্যাবে ওয়েবসাইট লোড হচ্ছে

➡️ Chrome একটি Process
➡️ এই প্রতিটি কাজ আলাদা আলাদা Thread

সব Thread একই Process-এর মেমোরি শেয়ার করে।


🔁 তুলনা করে এক নজরে

বিষয়ProgramProcessThread
অবস্থাস্থির (Stored)চলমানচলমান
অবস্থানহার্ডডিস্কRAMRAM
কাজকোডকোড চালানোছোট কাজ
সংখ্যাএকএকাধিক হতে পারেএকাধিক হতে পারে

🧠 বাস্তব জীবনের উদাহরণ (খুব সহজ)

ধরুন একটি রেস্টুরেন্ট—

  1. 📘 Program → রেসিপি বই

  2. 👨‍🍳 Process → রান্না চলছে

  3. 🍳 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 থাকে — এটা ঠিক না

সঠিক কথা হলো:

  1. যে Java প্রোগ্রামটি সরাসরি রান করা হয়,
    👉 সেখানে অবশ্যই একটি main() method থাকতে হবে

  2. কিন্তু সব Java class-এ main() থাকা বাধ্যতামূলক নয়

📌 উদাহরণ:

  1. Utility class

  2. Model / POJO class

  3. Android app

  4. Library class

➡️ এগুলোতে main() থাকে না


✔️ Main Thread নিয়ে

👉 Java প্রোগ্রাম রান হলেই একটি default thread তৈরি হয়
এই কথাটা পুরোপুরি ঠিক

  1. JVM যখন main() method কল করে

  2. তখন সে নিজে থেকেই একটি Thread তৈরি করে

  3. এই 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();
    }
}

এখানে—

  1. main() → entry point

  2. JVM → Main Thread তৈরি করেছে

  3. fun1()fun2()Main Thread-এই চলছে


📌 মনে রাখার জন্য (Exam Tip)

  1. main() method → Program শুরু করার জায়গা

  2. Main Thread → Program-এর প্রথম Thread

  3. 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 না

কারণ:

  1. test.java হলো source code

  2. JVM সরাসরি .java ফাইল চালায় না

তাহলে Program কোনটা?

যখন আপনি compile করেন—

javac test.java

তখন তৈরি হয়:

test.class

➡️ test.class (bytecode)-ই হলো আসল Program
➡️ এটি হার্ডডিস্কে থাকে, এখনো চলমান নয়


🔹 Process কোনটা?

যখন আপনি এই Program রান করেন—

java Test

তখন যা হয়:

  1. JVM শুরু হয়

  2. test.class মেমোরিতে লোড হয়

  3. CPU, RAM ব্যবহার শুরু হয়

➡️ এই পুরো চলমান অবস্থাটাই হলো Process

📌 এক কথায়:
java Test কমান্ড চালানোর পর যা চলছে = Process


🔹 Thread কোনটা?

Java-তে প্রতিটি Process-এর সাথে অন্তত একটি Thread থাকে
যাকে বলা হয় Main Thread

আপনার কোডে:

fun1();
fun2();
fun3();

এই তিনটি function—

➡️ একই Thread (Main Thread)-এর ভিতরে
➡️ একটার পর একটা (sequentially) রান করছে

তাই এখানে—

  1. Thread সংখ্যা = ১টি

  2. Thread নাম = Main Thread


🔁 এক লাইনে বুঝি

বিষয়এই উদাহরণে
Programtest.class
ProcessJVM-এ চলমান java Test
ThreadMain Thread

🧠 Flow আকারে বুঝি

test.java  (source code)
   ↓ compile
test.class (Program)
   ↓ run
JVM started → Process
   ↓
Main Thread
   ↓
fun1()
   ↓
fun2()
   ↓
fun3()

⚠️ গুরুত্বপূর্ণ নোট

আপনার কোডে যেহেতু—

  1. কোনো Thread class

  2. বা Runnable

  3. বা start()

ব্যবহার করা হয়নি

👉 তাই এখানে Multi-threading নেই

সব function একই Thread-এ একটার পর একটা চলছে।




Example : 

🌐 Chrome & Tabs উদাহরণ

🔹 Program কোনটা?

👉 Chrome browser (chrome.exe)

  1. এটি হার্ডডিস্কে ইনস্টল করা থাকে

  2. এখনো চলমান না থাকলে শুধু একটি Program


🔹 Process কোনটা?

👉 আপনি যখন Chrome ওপেন করেন

  1. Chrome RAM ও CPU ব্যবহার শুরু করে

  2. OS একটি বা একাধিক Process তৈরি করে

➡️ চলমান Chrome = Process

📌 Chrome সাধারণত:

  1. Browser Process

  2. Renderer Process

  3. GPU Process

আলাদা আলাদা Process ব্যবহার করে (stability ও security এর জন্য)


🔹 Thread কোনটা?

👉 প্রতিটি Process-এর ভিতরে অনেকগুলো Thread থাকে

একটি Tab-এর ভিতরে চলা কাজগুলো যেমন—

  1. ওয়েবপেজ লোড

  2. JavaScript রান

  3. ভিডিও প্লে

  4. ফাইল ডাউনলোড

➡️ এগুলো সবই Thread


🧠 সহজ করে এক লাইনে

বিষয়Chrome উদাহরণ
ProgramChrome browser (chrome.exe)
ProcessRunning Chrome
ThreadTab-এর ভেতরের কাজ

🔁 বাস্তব চিত্র (Mental Diagram)

Chrome Program
   ↓ open
Chrome Process
   ↓
Tab 1 → Thread (YouTube)
Tab 2 → Thread (Gmail)
Tab 3 → Thread (Download)

⚠️ Important Note (Exam-ready)

  1. Tab ≠ Thread (সবসময় না)

  2. একটি Tab-এর জন্য একাধিক Thread থাকতে পারে

  3. আবার কিছু Tab আলাদা Process-এও চলতে পারে

কিন্তু concept বোঝার জন্য:

👉 Tab = Thread ধরে নেওয়া যায়


✅ সংক্ষেপে (Exam Answer)

  1. Chrome → Program

  2. Running Chrome → Process

  3. Chrome Tab → Thread


Powered by Blogger.