থ্রেড হল একটা প্রক্রিয়া যা সহজে execute হয়। জাভার নিজস্ব support আছে multithreading programming এর জন্য। multithreading program একই সাথে দুই বা ততোধিক process চালাতে পারে। সহজভাবে যদি বলি আপনি যদি একই সাথে গান শোনা এবং বই পড়া চালিয়ে যাচ্ছেন বিষয় টা অনেকটা সেই রকম।
জাভাতে Thread এর একটি নির্দিষ্ট জীবন চক্র আছে। Thread এর জীবন চক্র ৫ টা ধাপে সম্পন্ন হয়ে থাকে।
- New : যখন কোন Thread তৈরী করা হয় তখন্ এই পর্যায়ে থাকে।
- Runnable : Thread যখন run() হওয়ার জন্য প্রস্তুত থাকে।
- Running : এইটা হল Thread এর চলমান অবস্থা।
- Non-Runnable (Blocked) : যখন Thread কে চলমান অবস্থায় থামিয়ে দেওয়া হয়।
- Terminated : এইটা হল যখন ফাইনালি Thread কে বন্ধ করে দেওয়া হয়।
জাভাতে কিছু নিজস্ব method আছে যে গুলো Thread এর implementation এর জন্য ব্যবহার করা যায়ঃ
- getName Thread এর নাম return করে
- getPriority Thread এর priority return করে
- isAlive Thread চলমান আছে কিনা যাচাই করে
- join Thread এর শেষ হওইয়া পর্যন্ত অপেক্ষা করে
- run Thread শুরু হওয়ার মেথড
- sleep Thread একটি নির্দিষ্ট সময় পর্যন্ত বন্ধ থাকে
- start Thread শুরু হয় এই মেথড কল করলে
Thread মুলত দুইভাবে তৈরী করা যায়ঃ
- Runnable Interface কে implement করে
- Thread class কে extend করে
- প্রথমে একটা ক্লাস বানাতে হবে যেটা Runnable Interface এর run() মেথড কে implement করবে।
class RunnableImpl implements Runnable {
public void run()
{
System.out.println("run");
}
}
- এরপর Thread এর একটা object তৈরী করতে হবে এবং RunnableImpl class কে constructor এ pass করতে হবে।
Thread thread = new Thread(new RunnableImpl());
- তারপর আমাদেরকে thread object টা চালাতে হবে start() মেথড কল করে।
thread.start();
- প্রথমে একটা ক্লাস বানাতে হবে যেটা Thread class কে extend করবে।
class ThreadImpl extends Thread {
public void run()
{
System.out.println("run");
}
}
- এরপর Thread এর একটা object তৈরী করতে হবে।
ThreadImpl thread = new ThreadImpl();
- তারপর আমাদেরকে thread object টা চালাতে হবে start() মেথড কল করে।
thread.start();
একটি প্রোগ্রামের ভিতর আমরা যখন একাধিক থ্রেড তৈরী করে রান করি তখন সেটা হয় multithreading.
public class MultiThreading extends Thread{
public void run(){
System.out.println(Thread.currentThread().getName() + " is running...");
}
public static void main(String args[]){
MultiThreading t1=new MultiThreading();
MultiThreading t2=new MultiThreading();
MultiThreading t3=new MultiThreading();
t1.start();
t2.start();
t3.start();
}
}