থ্রেড অগ্রাধিকার - 1

"আসুন আমাদের পাঠ চালিয়ে যাওয়া যাক। থ্রেড অগ্রাধিকার কি এবং কেন তাদের প্রয়োজন?

"বাস্তব বিশ্বের সমস্যায়, বিভিন্ন থ্রেড দ্বারা সম্পাদিত কাজের গুরুত্ব ব্যাপকভাবে পরিবর্তিত হতে পারে। এই প্রক্রিয়াটিকে নিয়ন্ত্রণ করার জন্য থ্রেড অগ্রাধিকারের ধারণা তৈরি করা হয়েছিল। প্রতিটি থ্রেডের একটি অগ্রাধিকার রয়েছে 1 থেকে 10 পর্যন্ত একটি সংখ্যা দ্বারা প্রতিনিধিত্ব করা হয়।"

"10 হল সর্বোচ্চ অগ্রাধিকার।"

"1 সর্বনিম্ন।"

"যদি কোন অগ্রাধিকার না দেওয়া হয়, তাহলে একটি থ্রেড অগ্রাধিকার 5 (স্বাভাবিক) পায়।"

একটি থ্রেডের অগ্রাধিকার তার কাজকে উল্লেখযোগ্যভাবে প্রভাবিত করে না, বরং এটি একটি সুপারিশ বেশি। যদি বেশ কয়েকটি স্লিপিং থ্রেড চালানোর প্রয়োজন হয়, জাভা মেশিন প্রথমে একটি উচ্চ অগ্রাধিকার দিয়ে একটি থ্রেড শুরু করবে।

"জাভা মেশিন থ্রেডগুলিকে যেমন মানানসই দেখায় পরিচালনা করে। কম অগ্রাধিকার সহ থ্রেডগুলি নিষ্ক্রিয় অবস্থায় ছেড়ে দেওয়া হবে না। তারা অন্যদের তুলনায় কম কার্যকর করার সময় পাবে, তবে সেগুলি এখনও কার্যকর করা হবে।"

"বেশিরভাগ ক্ষেত্রে, থ্রেডগুলি সবসময় একই অগ্রাধিকারের সাথে কার্যকর করা হয়। একটি থ্রেড অন্যদের থেকে বেশি দেওয়ার চেষ্টা প্রায়শই একটি প্রোগ্রামে স্থাপত্য সমস্যাগুলির একটি ইঙ্গিত।"

"ওহো। এবং আমি ইতিমধ্যেই আমার থ্রেডগুলিতে সর্বোচ্চ অগ্রাধিকার দেওয়ার স্বপ্ন দেখেছিলাম যাতে তারা 10 গুণ বেশি করে।"

"এটি দেখা যাচ্ছে যে এখানে পরিস্থিতি চূড়ান্ত হওয়ার কাছাকাছি: একটি উচ্চ অগ্রাধিকার সহ একটি থ্রেড আরও কাজ করতে পারে এবং করবে, তবে হয়ত না-কোন গ্যারান্টি নেই।"

"বলুন, আমি কিভাবে একটি থ্রেডের অগ্রাধিকার পরিবর্তন করব?"

"এটা খুবই সহজ। থ্রেড ক্লাসের দুটি পদ্ধতি আছে:"

পদ্ধতি বর্ণনা
void setPriority(int newPriority)
একটি নতুন অগ্রাধিকার সেট করে
int getPriority()
বর্তমান থ্রেড অগ্রাধিকার প্রদান করে

"থ্রেড ক্লাসে তিনটি ধ্রুবক রয়েছে:"

সর্বজনীন চূড়ান্ত স্ট্যাটিক int MIN_PRIORITY = 1;

সর্বজনীন চূড়ান্ত স্ট্যাটিক int NORM_PRIORITY = 5;

সর্বজনীন চূড়ান্ত স্ট্যাটিক int MAX_PRIORITY = 10;

"আমাকে অনুমান করতে দিন৷ MIN_PRIORITY হল সর্বনিম্ন অগ্রাধিকার, MAX_PRIORITY সর্বাধিক এবং NORM_PRIORITY হল ডিফল্ট অগ্রাধিকার?"

"হ্যাঁ, ঠিক। আপনি এমন কোড লিখতে পারেন যা সর্বোচ্চ থ্রেড অগ্রাধিকার দেয়।"

"এখানে কিছু কৌশল আছে? এইরকম কিছু?"

Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();

"এটা ঠিক। জটিল কিছু না, তাই না?"

"হ্যাঁ। আপনি কি থ্রেড শুরু হওয়ার পরে অগ্রাধিকার সেট/পরিবর্তন করতে পারেন? নাকি এটি সেটডেমনের মতো, যেখানে থ্রেড শুরু করার আগে আপনাকে মান সেট করতে হবে?"

"একটি থ্রেড শুরু হওয়ার পরে অগ্রাধিকার পরিবর্তন করা যেতে পারে। আমি আগেই বলেছি, এর ফলে কোনো নাটকীয় পরিবর্তন হয় না।"

"ওয়েল, এটি একটি ছোট কিন্তু আকর্ষণীয় বিষয় ছিল। ধন্যবাদ, এলি।"