কম্পিউটার

কখন আমরা জাভাতে একটি থ্রেডের অপেক্ষা () এবং অপেক্ষা (দীর্ঘ) পদ্ধতি কল করতে পারি?


যখনই wait() পদ্ধতিটিকে একটি বস্তুতে বলা হয়, এটি বর্তমান থ্রেডটিকে অপেক্ষা করতে দেয় যতক্ষণ না অন্য থ্রেড notify() কে আহ্বান করে। অথবা সকলকে অবহিত করুন() এই বস্তুর জন্য পদ্ধতি যেখানে অপেক্ষা করুন (দীর্ঘ সময়সীমা) অন্য একটি থ্রেড notify() না আসা পর্যন্ত বর্তমান থ্রেডটিকে অপেক্ষা করতে দেয় অথবা সকলকে অবহিত করুন() এই বস্তুর জন্য পদ্ধতি, অথবা একটি নির্দিষ্ট সময় শেষ হয়ে গেছে।

অপেক্ষা করুন()

নিচের প্রোগ্রামে, When wait() একটি বস্তুর উপর বলা হয়, থ্রেডটি দৌড়ে অপেক্ষার অবস্থায় প্রবেশ করে . এটি notify() কল করার জন্য অন্য কোনো থ্রেডের জন্য অপেক্ষা করে অথবা অল() কে অবহিত করুন যাতে এটি চলমান অবস্থায় প্রবেশ করতে পারে, একটি অচলাবস্থা গঠিত হবে।

উদাহরণ

ক্লাস MyRunnable প্রয়োগ করে Runnable { public void run() { synchronized(this) { System.out.println("In run() method"); চেষ্টা করুন { this.wait(); System.out.println("ওয়েটিং স্টেটে থ্রেড, নোটিফাই() বা নোটিফাই() কল করার জন্য একই বস্তুতে অন্য কিছু থ্রেডের জন্য অপেক্ষা করা হচ্ছে"); } ধরা (InterruptedException ie) { ie.printStackTrace(); } } }} পাবলিক ক্লাস WaitMethodWithoutParameterTest { পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] আরগস) { MyRunnable myRunnable =new MyRunnable(); থ্রেড থ্রেড =নতুন থ্রেড (myRunnable, "থ্রেড-1"); thread.start(); }}

আউটপুট

run() পদ্ধতিতে


অপেক্ষা করুন (দীর্ঘ)

নিচের প্রোগ্রামে, When wait(1000) একটি বস্তুর উপর কল করা হয়, থ্রেডটি অপেক্ষার অবস্থায় চলমান থেকে প্রবেশ করে এমনকি notify() হলেও অথবা সকলকে অবহিত করুন() টাইম আউট সময় অতিবাহিত হওয়ার পরে বলা হয় না থ্রেডটি চালানোর যোগ্য অবস্থায় অপেক্ষা করা থেকে চলে যাবে।

উদাহরণ

ক্লাস MyRunnable প্রয়োগ করে Runnable { public void run() { synchronized(this) { System.out.println("In run() method"); চেষ্টা করুন { this.wait(1000);  System.out.println("ওয়েটিং স্টেটে থ্রেড, নোটিফাই() বা নোটিফাই() কল করার জন্য একই বস্তুতে অন্য কিছু থ্রেডের জন্য অপেক্ষা করা হচ্ছে"); } ধরা (InterruptedException ie) { ie.printStackTrace(); } } }} পাবলিক ক্লাস WaitMethodWithParameterTest { পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] আর্গস) { MyRunnable myRunnable =new MyRunnable(); থ্রেড থ্রেড =নতুন থ্রেড (myRunnable, "থ্রেড-1"); thread.start(); }}

আউটপুট

রান() মেথড থ্রেড ওয়েটিং স্টেটে, নোটিফাই() বা notifyAll() কল করার জন্য একই অবজেক্টে অন্য কিছু থ্রেডের জন্য অপেক্ষা করছে। 
  1. আমরা কখন জাভাতে প্যাক() পদ্ধতি ব্যবহার করতে পারি?

  2. জাভাতে wait(), notify() এবং notifyAll() পদ্ধতির গুরুত্ব?

  3. আমরা কখন জাভাতে সিঙ্ক্রোনাইজড ব্লক ব্যবহার করতে পারি?

  4. জাভাতে Thread.start() এর পরিবর্তে Thread.run() কে কখন কল করবেন?