চলমান এবং কলযোগ্য উভয়ই কার্যকরী ইন্টারফেস। যে ক্লাসগুলি এই ইন্টারফেসগুলি বাস্তবায়ন করছে সেগুলি অন্য থ্রেড দ্বারা কার্যকর করার জন্য ডিজাইন করা হয়েছে৷
থ্রেডটি Ruunable দিয়ে শুরু করা যেতে পারে এবং তারা একটি নতুন থ্রেড শুরু করার দুটি উপায়:একটি হল থ্রেড ক্লাস সাবক্লাস করে এবং অন্যটি রানেবল ইন্টারফেস প্রয়োগ করা।
থ্রেড ক্লাসে কল করার জন্য কনস্ট্রাক্টর নেই তাই থ্রেড চালানোর জন্য আমাদের এক্সিকিউটরসার্ভিস ক্লাস ব্যবহার করা উচিত।
| Sr. না। | কী | চালাতে যোগ্য | ক্যালেবল |
|---|---|---|---|
| 1 | প্যাকেজ | এটি Java.lang-এর অন্তর্গত | এটি java.util.concurrent এর অন্তর্গত |
| 2 | থ্রেড তৈরি | আমরা একটি প্যারামিটার হিসাবে রানেবল পাস করে থ্রেড তৈরি করতে পারি। | আমরা প্যারামিটার হিসাবে কলযোগ্য পাস করে থ্রেড তৈরি করতে পারি না |
| 3 | রিটার্ন টাইপ | Runable কিছুই ফেরত দেয় না | কলযোগ্য ফলাফল ফেরত দিতে পারে |
| 4. | পদ্ধতি | এতে রান() পদ্ধতি রয়েছে | এতে কল() পদ্ধতি আছে |
| 5 | বাল্ক এক্সিকিউশন | এটি টাস্কের বাল্ক এক্সিকিউশনের জন্য ব্যবহার করা যাবে না | এটি invokeAll() চালু করে টাস্কের বাল্ক সম্পাদনের জন্য ব্যবহার করা যেতে পারে। |
চালানযোগ্য উদাহরণ
public class RunnableExample implements Runnable {
public void run() {
System.out.println("Hello from a Runnable!");
}
public static void main(String args[]) {
(new Thread(new RunnableExample())).start();
}
} কলযোগ্য উদাহরণ
public class Main {
public static void main(String args[]) throws InterruptedException, ExecutionException {
ExecutorService services = Executors.newSingleThreadExecutor();
Future<?> future = services.submit(new Task());
System.out.println("In Future Object" + future.get());
}
}
import java.util.concurrent.Callable;
public class Task implements Callable {
@Override
public String call() throws Exception {
System.out.println("In call");
String name = "test";
return name;
}
}