সাধারণ লোকের বিবেচনায় জাভাতে "রান্নেবল" কী? আমি উচ্চ বিদ্যালয়ের একজন এপি প্রোগ্রামিং শিক্ষার্থী, যার কাজটি গবেষণা করা বা অন্যের কাছ থেকে "চালানো" কী তা (আমরা কেবল ওওপিতে যাচ্ছি, এবং এখনও থ্রেড স্পর্শ করি নি) to
সাধারণ লোকের বিবেচনায় জাভাতে "রান্নেবল" কী? আমি উচ্চ বিদ্যালয়ের একজন এপি প্রোগ্রামিং শিক্ষার্থী, যার কাজটি গবেষণা করা বা অন্যের কাছ থেকে "চালানো" কী তা (আমরা কেবল ওওপিতে যাচ্ছি, এবং এখনও থ্রেড স্পর্শ করি নি) to
উত্তর:
একটি রান্নেবল হ'ল মূলত এক ধরণের শ্রেণি (রান্নেবল একটি ইন্টারফেস) যা থ্রেডে রাখা যেতে পারে, থ্রেডটি কী করার কথা বলে তা বর্ণনা করে।
Runnable ইন্টারফেস পদ্ধতি বাস্তবায়ন করতে ক্লাসের প্রয়োজন run()যেমন:
public class MyRunnableTask implements Runnable {
public void run() {
// do stuff here
}
}
এবং তারপরে এটি ব্যবহার করুন:
Thread t = new Thread(new MyRunnableTask());
t.start();
আপনার যদি Runnableইন্টারফেস না থাকে , অন্য থ্রেডে আপনার স্টাফ চালানোর জন্য দায়বদ্ধ থ্রেড ক্লাসটি run()আপনার ক্লাসে কোনও পদ্ধতি সন্ধানের প্রতিশ্রুতি রাখে না , তাই আপনি ত্রুটি পেতে পারেন। এজন্য আপনাকে ইন্টারফেসটি প্রয়োগ করতে হবে।
মনে রাখবেন যে আপনার যথারীতি কোনও শ্রেণি সংজ্ঞায়িত করার দরকার নেই, আপনি এই ইনলাইনটি সবই করতে পারেন:
Thread t = new Thread(new Runnable() {
public void run() {
// stuff here
}
});
t.start();
এটি উপরের মতো, কেবলমাত্র আপনি অন্য নামী বর্গ তৈরি করবেন না।
runপদ্ধতিটি শেষ না হওয়া পর্যন্ত থ্রেডটি চালানো হবে , তারপরে থ্রেডটি বন্ধ থাকবে। আপনি যদি কোনও থ্রেড বারবার চালাতে চান তবে runপদ্ধতির অভ্যন্তরে একটি লুপ রাখুন ।
new Thread(() -> System.out.println("hello from other thread")).start();
Runnable একটি ইন্টারফেস তাই হিসাবে সংজ্ঞায়িত:
interface Runnable {
public void run();
}
এটি ব্যবহার করে এমন একটি বর্গ তৈরি করতে, কেবল শ্রেণিটি হিসাবে সংজ্ঞায়িত করুন (public) class MyRunnable implements Runnable {
এটি একটি নতুন থ্রেড না করেও ব্যবহার করা যেতে পারে। এটি মূলত আপনার একক পদ্ধতি, রান, যা কল করা যেতে পারে তার সাথে আপনার বেসিক ইন্টারফেস।
যদি আপনি প্যারামিটার হিসাবে রান্নেবল দিয়ে একটি নতুন থ্রেড তৈরি করেন তবে এটি রান থেরাপিটিকে একটি নতুন থ্রেডে কল করবে।
এটিও লক্ষ করা উচিত যে থ্রেডগুলি বাস্তবায়ন করে Runnableএবং যখন নতুন থ্রেড তৈরি করা হয় তখন (নতুন থ্রেডে) বলা হয়। ডিফল্ট বাস্তবায়ন কেবল আপনি কন্সট্রাক্টরের হাতে রান্নেবলকে যা বলে তা ডেকে তোলে, এজন্য আপনি new Thread(someRunnable)থ্রেডের runপদ্ধতিটিকে ওভাররাইড না করেই করতে পারেন ।
Threadথ্রেড পুলিং প্রসারিত করেন এবং যদি আপনি থ্রেড পুলিং বাস্তবায়ন না করেন তবে আপনি সর্বদা নতুন থ্রেড তৈরির উল্লেখযোগ্য ব্যয় পরিধান করেন । বিপরীতে, কেবল বাস্তবায়ন করার Runnableঅর্থ আপনি সহজেই ThreadPoolExecutorServiceবা তৃতীয় পক্ষের থ্রেড পুলের মতো জিনিস ব্যবহার করতে পারেন ।