কম্পিউটার

মাল্টিথ্রেডিং-এ জাভা থ্রেড অগ্রাধিকার


মাল্টি-থ্রেডিংয়ের পরিস্থিতিতে, একটি থ্রেড শিডিউলার তাদের অগ্রাধিকারের ভিত্তিতে নির্দিষ্ট প্রক্রিয়াগুলিতে থ্রেডগুলি বরাদ্দ করে। একটি জাভা থ্রেড একটি পূর্ব নির্ধারিত অগ্রাধিকারের সাথে আসে। এটি ছাড়াও, জাভা ভার্চুয়াল মেশিন থ্রেড বা প্রোগ্রামারদের দ্বারা স্পষ্টভাবে প্রদত্ত অগ্রাধিকার প্রদান করতে পারে। একটি থ্রেডের অগ্রাধিকারের জন্য মানগুলির পরিসর 1 এবং 10 (অন্তর্ভুক্ত) এর মধ্যে থাকে৷ অগ্রাধিকারের সাথে যুক্ত তিনটি স্ট্যাটিক ভেরিয়েবল হল −

  • MAX_PRIORITY - একটি থ্রেডের সর্বোচ্চ অগ্রাধিকার, যার ডিফল্ট মান হল 10৷

  • NORM_PRIORITY - একটি থ্রেডের ডিফল্ট অগ্রাধিকার, যার ডিফল্ট মান হল 5৷

  • MIN_PRIORITY - একটি থ্রেডের ন্যূনতম অগ্রাধিকার, যার ডিফল্ট মান হল 1৷

জাভাতে 'getPriority()' পদ্ধতিটি মান হিসাবে আবদ্ধ থ্রেডের অগ্রাধিকার ফিরিয়ে দিতে সাহায্য করে।

'setPriority()' পদ্ধতি একটি প্রদত্ত থ্রেডের অগ্রাধিকার মান পরিবর্তন করে। থ্রেডের অগ্রাধিকার 1-এর কম বা 10-এর বেশি হলে এটি IllegalArgumentException নিক্ষেপ করে৷

উদাহরণ

import java.lang.*;
public class Demo extends Thread{
   public void run(){
      System.out.println("Now, inside the run method");
   }
   public static void main(String[]args){
      Demo my_thr_1 = new Demo();
      Demo my_thr_2 = new Demo();
      System.out.println("The thread priority of first thread is : " + my_thr_1.getPriority());
      System.out.println("The thread priority of first thread is : " +       my_thr_2.getPriority());
      my_thr_1.setPriority(5);
      my_thr_2.setPriority(3);
      System.out.println("The thread priority of first thread is : " +    my_thr_1.getPriority());
      System.out.println("The thread priority of first thread is : " + my_thr_2.getPriority());
      System.out.print(Thread.currentThread().getName());
      System.out.println("The thread priority of main thread is : " +
      Thread.currentThread().getPriority());
      Thread.currentThread().setPriority(10);
      System.out.println("The thread priority of main thread is : " +
      Thread.currentThread().getPriority());
   }
}

আউটপুট

The thread priority of first thread is : 5
The thread priority of first thread is : 5
The thread priority of first thread is : 5
The thread priority of first thread is : 3
The thread priority of main thread is : 5
The thread priority of main thread is : 10

ডেমো নামের একটি ক্লাস বেস ক্লাস থ্রেড থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। ফাংশন 'রান' সংজ্ঞায়িত করা হয়েছে এবং একটি প্রাসঙ্গিক বার্তা সংজ্ঞায়িত করা হয়েছে। প্রধান ফাংশনে, ডেমো ক্লাসের দুটি উদাহরণ তৈরি করা হয় এবং ফাংশনটিকে 'getPriority' বলে তাদের অগ্রাধিকারগুলি খুঁজে পাওয়া যায়৷

তারা কনসোলে মুদ্রিত হয়. এরপরে, ডেমো দৃষ্টান্তগুলিকে 'setPriority' ফাংশন ব্যবহার করে অগ্রাধিকার দেওয়া হয়। আউটপুট কনসোলে প্রদর্শিত হয়। থ্রেডের নাম 'getName' ফাংশনের সাহায্যে স্ক্রিনে প্রিন্ট করা হয়।


  1. জাভাতে চলমান থ্রেডকে কীভাবে বাধা দেবেন?

  2. জাভাতে থ্রেড অগ্রাধিকারের গুরুত্ব?

  3. কিভাবে আমরা জাভাতে একটি থ্রেড বন্ধ করতে পারি?

  4. জাভাতে ইউজার থ্রেড বনাম ডেমন থ্রেড?