জাভাতে থ্রেড তৈরি করার দুটি পদ্ধতি রয়েছে: Thread ক্লাস এক্সটেন্ড করা বা Runnable ইন্টারফেস ইমপ্লিমেন্ট করা।
Thread এবং Runnable-এর তুলনা
| ক্রমিক নং | বিষয় | Thread | Runnable |
|---|---|---|---|
| ১ | বেসিক | Thread একটি ক্লাস, থ্রেড তৈরি করতে ব্যবহৃত হয় | Runnable একটি ফাংশনাল ইন্টারফেস, থ্রেড তৈরি করতে ব্যবহৃত হয় |
| ২ | মেথড | start(), run() সহ একাধিক মেথড রয়েছে | শুধু run() абস্ট্রাক্ট মেথড রয়েছে |
| ৩ | অবজেক্ট অ্যাসোসিয়েশন | প্রতিটি থ্রেড আলাদা অবজেক্ট তৈরি করে ও সাথে যুক্ত হয় | একাধিক থ্রেড একই অবজেক্ট শেয়ার করতে পারে |
| ৪ | মেমোরি | অধিক মেমোরি প্রয়োজন | কম মেমোরি প্রয়োজন |
| ৫ | লিমিটেশন | জাভায় মাল্টিপল ইনহেরিট্যান্স নেই, Thread এক্সটেন্ড করলে অন্য ক্লাস এক্সটেন্ড করা যায় না | Runnable ইমপ্লিমেন্ট করলে আপনার ক্লাস অন্য ক্লাস এক্সটেন্ড করতে পারে |
Runnable উদাহরণ
class RunnableExample implements Runnable {
public void run() {
System.out.println("Runnable Implementation দিয়ে থ্রেড চলছে");
}
public static void main(String args[]) {
RunnableExample runnable = new RunnableExample();
Thread t1 = new Thread(runnable);
t1.start();
}
}
Thread উদাহরণ
class ThreadExample extends Thread {
public void run() {
System.out.println("Thread ক্লাস এক্সটেন্ড করে থ্রেড চলছে");
}
public static void main(String args[]) {
ThreadExample t1 = new ThreadExample();
t1.start();
}
}
সেরা অনুশীলন
Runnable প্রিয়রিটি পাওয়া যায় কারণ:
- কম্পোজিশন ওভার ইনহেরিট্যান্স princípio মেনে চলে
- একই রাননেবল ইনস্ট্যান্স একাধিক থ্রেডে শেয়ার করা যায়
- ল্যাম্বডা এক্সপ্রেশন ব্যবহার করা যায় (জাভা ৮+) :
new Thread(() -> System.out.println("Hello")).start(); - এক্সিকিউটর ফ্রেমওয়ার্কের সাথে স“知道