Callable Interface এবং Runnable এর মধ্যে পার্থক্য

Callable এবং Future Interface - জাভা কনকারেন্সি (Java Concurrency) - Java Technologies

360

Callable এবং Runnable ইন্টারফেস দুটোই জাভাতে কনকারেন্ট টাস্ক কার্যকর করার জন্য ব্যবহৃত হয়। তবে, তাদের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।


Runnable Interface

  1. রিটার্ন ভ্যালু নেই: Runnable ইন্টারফেস কোনো রিটার্ন ভ্যালু দেয় না। run() মেথড কেবল একটি টাস্ক সম্পন্ন করে।
  2. চলতি থ্রেডে এক্সিকিউট হয়: Runnable সরাসরি Thread ক্লাস বা ExecutorService দ্বারা চালানো হয়।
  3. Exception Handling নেই: run() মেথড চেকড এক্সেপশন থ্রো করতে পারে না।
  4. ব্যবহার: সাধারণত হালকা কাজ সম্পাদনের জন্য ব্যবহার করা হয়।

Runnable উদাহরণ:

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Runnable is running: " + Thread.currentThread().getName());
    }
}

public class RunnableExample {
    public static void main(String[] args) {
        Runnable myRunnable = new MyRunnable();
        Thread thread = new Thread(myRunnable);
        thread.start();
    }
}

Callable Interface

  1. রিটার্ন ভ্যালু দেয়: Callable ইন্টারফেস একটি রিটার্ন ভ্যালু প্রদান করে। এটি call() মেথড ব্যবহার করে।
  2. Future অবজেক্টের মাধ্যমে রিটার্ন: Callable-এর রিটার্ন ভ্যালু Future অবজেক্টের মাধ্যমে অ্যাক্সেস করা যায়।
  3. Exception Handling সমর্থন করে: call() মেথড চেকড এক্সেপশন থ্রো করতে পারে।
  4. ব্যবহার: কমপ্লেক্স বা দীর্ঘমেয়াদী কাজ যেখানে রিটার্ন ভ্যালু প্রয়োজন হয়।

Callable উদাহরণ:

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

class MyCallable implements Callable<String> {
    @Override
    public String call() throws Exception {
        Thread.sleep(1000); // কিছু কাজ করছে
        return "Callable completed by: " + Thread.currentThread().getName();
    }
}

public class CallableExample {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newSingleThreadExecutor();
        Callable<String> myCallable = new MyCallable();
        Future<String> future = executor.submit(myCallable);

        try {
            System.out.println("Result: " + future.get()); // Future থেকে ফলাফল পেতে
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            executor.shutdown();
        }
    }
}

Callable এবং Runnable-এর মধ্যে পার্থক্য

বৈশিষ্ট্যRunnableCallable
রিটার্ন ভ্যালুনা (void)হ্যাঁ (Future অবজেক্ট ব্যবহার করে)।
মেথডের নামrun()call()
Exception Handlingচেকড এক্সেপশন সমর্থন করে না।চেকড এক্সেপশন থ্রো করতে পারে।
Future IntegrationFuture অবজেক্ট সাপোর্ট করে না।Future অবজেক্টের মাধ্যমে ফলাফল প্রদান করে।
ব্যবহারহালকা কাজ যেখানে রিটার্ন ভ্যালু প্রয়োজন নেই।জটিল কাজ যেখানে রিটার্ন ভ্যালু এবং এক্সেপশন হ্যান্ডলিং প্রয়োজন।

Runnable বনাম Callable: কোনটি ব্যবহার করবেন?

  1. Runnable ব্যবহার করুন:
    • যদি কোনো রিটার্ন ভ্যালু প্রয়োজন না হয়।
    • কাজটি সহজ এবং দ্রুত সম্পন্নযোগ্য।
    • আপনি Thread API বা ExecutorService ব্যবহার করছেন।
  2. Callable ব্যবহার করুন:
    • যদি কাজের পরে একটি রিটার্ন ভ্যালু প্রয়োজন হয়।
    • যদি কাজটি জটিল এবং এক্সেপশন হ্যান্ডলিং প্রয়োজন হয়।
    • যদি Future বা অ্যাসিঙ্ক্রোনাস প্রসেসিং দরকার হয়।

উদাহরণ: Runnable বনাম Callable

import java.util.concurrent.*;

public class RunnableVsCallableExample {
    public static void main(String[] args) throws Exception {
        ExecutorService executor = Executors.newFixedThreadPool(2);

        // Runnable উদাহরণ
        Runnable myRunnable = () -> System.out.println("Runnable is running.");
        executor.execute(myRunnable);

        // Callable উদাহরণ
        Callable<String> myCallable = () -> {
            Thread.sleep(500);
            return "Callable result.";
        };

        Future<String> future = executor.submit(myCallable);

        // Callable এর রিটার্ন ভ্যালু পান
        System.out.println("Callable Result: " + future.get());

        executor.shutdown();
    }
}

  • Runnable হলো হালকা ও দ্রুত সম্পন্ন হওয়া কাজের জন্য।
  • Callable ব্যবহার করুন যখন রিটার্ন ভ্যালু বা অ্যাসিঙ্ক্রোনাস প্রসেসিং প্রয়োজন।

এই পার্থক্যগুলো মনে রেখে কনকারেন্সি সম্পর্কিত কাজ আরো কার্যকরভাবে পরিচালনা করা যাবে।

Content added By
Promotion

Are you sure to start over?

Loading...