Java

থ্রেডের join(), isAlive(), sleep(), currentThread()

নিচের উদাহরণে আমরা sleep(), join(), isAlive(), currentThread() মেথোড একসাথে ব্যবহার করেছি।

sleep(): sleep(milisecond, nenosecond) or sleep(milisecond)
একটি নির্দিষ্ট সময়ের জন্যে নির্দিষ্ট থ্রেডের কাজকে ঘুম পারিয়ে রাখা বা বিরতি দিয়ে রাখা বোঝানো হয়।
কিন্তু প্রসেসের সেই সময়ে তার অন্য কাজ ঠিকই করে শুধু নির্দিষ্ট থ্রেডটি নির্দিষ্ট সময়ের জন্যে স্লিপ মুডে থাকে মানে তার কাজ বন্ধ রাখে।

join(): join(miliseconds)
এটিকে objectname.join() or objectname.join(miliseconds) এই ভাবে প্রকাশ করা হয়।
এটি একটি static method তাই এটি static method বা মেইন ক্লাস ছাড়া ব্যবহার করা যায় না।
এটি বহুল ব্যবহৃত একটি মেথোড। একটি থ্রেডের কাজ শেষ না হওয়া পর্যন্ত অপর থ্রেড যাতে শুরু না হয় বা একটি নির্দিষ্ট থ্রেডের কাজ অন্য থ্রেডের আগে সমাপ্ত নিশ্চিত করার জন্যে এটি ব্যবহৃত হয়।
এই মেথোডের আর্গুমেন্ট হিসেবে মিলিসেকেন্ড দেওয়া হয়। এটি মূলত অপেক্ষা করার একটি সময়। থ্রেডের কাজ যেহেতু অপারেটিং সিস্টেম হ্যান্ডেল করে তাই একটি থ্রেড যে নির্দিষ্ট মিলি সেকেন্ডের মধ্যে সমাপ্ত হবে তার নিশ্চয়তা নেই।

isAlive(): এটি বুলিয়ান আউটপুট দেখায়। true or false.
এটিকে objectname.isAlive() দিয়ে প্রকাশ করা হয়।
নির্দিষ্ট অবজেক্টের থ্রেড এখনো রান্নিং হলে এটি true রিটার্ন করে। অন্যথায় false

currentThread(): T.currentThread()দিয়ে এখানে এই ক্লাসের জন্যে তৈরি করা t1, t2, t3 তিনটি থ্রেডকে চিহ্নিত করে।
যখন যেই থ্রেড start() করা হয় run() মেথোডে T.currentThread() দ্বারা সেই থ্রেডকেই নির্দেষ করে।
Example:
Package javathread;

  1. public class joinThread implements Runnable {
  2. Thread T;
  3. public void run () {
    System.out.println(T.currentThread().getName() + ” is alive: ” +T.currentThread().isAlive());
    }
    }

এখানে T একটি রেফারেন্স থ্রেড অবজেক্ট। যা নির্দিষ্ট থ্রেড এক্সেস করতে সাহায্য করে।

package javathread;

  1. public class joindemo {
  2. public static void main(String[] args) {
  3. Thread t1 = new Thread(new joinThread(), “t1”);
    Thread t2 = new Thread(new joinThread(), “t2”);
    Thread t3 = new Thread(new joinThread(), “t3”);
  4. t1.start();
    /* এই স্টেইটমেন্টের পর সাথে সাথে run() method কল হবে। t1 থ্রেড এলাইভ তাই এটি আউটপুটে true দেখাবে
    */
  5. try {
    t1.join(2000); /* t1 থ্রেড শুরু হওয়ার পর ২ সেকেন্ডের মধ্যে এটি মৃত্যুবরণ করবে। যেহেতু আমরা এখানে ২ সেকেন্ড সময় নির্ধারণ করে দিয়েছি। t1 থ্রেডের আর কোন কাজ নেই তাই সে এই সময়ের মধ্যেই সমাপ্ত হবে */
    }catch(InterruptedException e) {}
  6. /* t1 মৃত্যবরণ করার পর পরই t3 থ্রেডের কাজ শুরু হবে এবং run() মেথোড কল হবে এবং যেহেতু এলাইভ তাই true দেখাবে আউটপুটে
    */
    t3.start();
  7. try {
    t1.join(); /* এটি নিশ্চিত করে যে, যদি t1 ২ সেকেন্ডের মাঝে সমাপ্ত না হয় মানে জীবিত হয় তাহলে এখানে এসে সে ফাইনালি সমাপ্ত হবে। যতক্ষণ না সে সমাপ্ত হবে ততক্ষণ t2 থ্রেড start হবেনা */
    }catch(InterruptedException e) {}
  8. t2.start();
  9. try {
    System.out.println(“t1 thread is alive: ” + t1.isAlive());
    t3.sleep(2000);
    }catch(InterruptedException e) {}
  10. try {
    t1.join();
    t2.join();
    t3.join();
    }
    catch(InterruptedException e) {} /*মেইন থ্রেডের আগে যাতে সকল বাচ্চা থ্রেডের কাজ সমাপ্ত হয় তা নিশ্চিত করার জন্যেই আমরা এখানে join() method আবার ব্যাবহার করলাম */
  11. System.out.println(“t1 thred is alive: ” + t1.isAlive());
    System.out.println(“t2 thred is alive: ” + t2.isAlive());
    System.out.println(“t3 thred is alive: ” + t3.isAlive());
  12. System.out.println(“And now all thread is not alive and this ensures us main thread will end last”);
  13. Thread t = Thread.currentThread();
  14. t.setName(“Main Thread on this program”);
  15. try {
    for(int i = 1; i<3;i++) {
    System.out.println(t.getName() + “: ” + i );
    Thread.sleep(500);
    }
    }
    catch (InterruptedException e) {
    System.out.println(“Interrupted by OP”);
    }
  16. }
  17. }

output:

t1 is alive: true
t1 thread is alive: false
t3 is alive: true
t2 is alive: true
t1 thred is alive: false
t2 thred is alive: false
t3 thred is alive: false
And now all thread is not alive and this ensures us main thread will end last
Main Thread on this program: 1
Main Thread on this program: 2

আশিক
আই আই ইউ সি

Leave a Reply

Your email address will not be published.

nineteen − four =