জাভাতে সমকালীন প্রোগ্রামিংয়ে কোন মনিটরের কথা বলা হয়?
যখন আমি পড়ি যে "প্রতিটি বস্তু একটি মনিটরের সাথে যুক্ত হয়েছে" এর অর্থ কী?
এটি একটি বিশেষ বিষয়?
জাভাতে সমকালীন প্রোগ্রামিংয়ে কোন মনিটরের কথা বলা হয়?
যখন আমি পড়ি যে "প্রতিটি বস্তু একটি মনিটরের সাথে যুক্ত হয়েছে" এর অর্থ কী?
এটি একটি বিশেষ বিষয়?
উত্তর:
একটি মনিটর হ'ল কোনও বস্তুর একযোগে অ্যাক্সেস নিয়ন্ত্রণ করার প্রক্রিয়া।
এটি আপনাকে করতে দেয়:
থ্রেড 1:
public void a()
{
synchronized(someObject) {
// do something (1)
}
}
থ্রেড 2:
public void b()
{
synchronized(someObject) {
// do something else (2)
}
}
এটি একই সময়ে মনিটরিড (সিঙ্ক্রোনাইজড) বিভাগে অ্যাক্সেস করতে থ্রেডগুলি 1 এবং 2 টি প্রতিরোধ করে। একটি শুরু হবে, এবং মনিটর অন্যটিকে প্রথমটি শেষ হওয়ার আগে এই অঞ্চলে অ্যাক্সেস করা থেকে বিরত রাখবে।
এটি কোনও বিশেষ বিষয় নয়। এটা তোলে এর সিঙ্ক্রোনাইজেশন প্রক্রিয়া বর্গ অনুক্রমের রুট স্থাপিত: java.lang.Object
।
এছাড়াও রয়েছে wait
এবং notify
পদ্ধতি বিভিন্ন থ্রেড মধ্যে যোগাযোগ করার জন্য বস্তুর মনিটর ব্যবহার করা হবে।
Class
স্থির পদ্ধতির জন্য সংশ্লিষ্ট অবজেক্ট। আপনার যদি ইতিমধ্যে একটি সিঙ্ক্রোনাইজড মেথড 1 () থাকে এবং আপনি মেথড 2 () সিঙ্ক্রোনাইজড ঘোষণা করেন, কোনও নতুন মনিটর তৈরি করা হয়নি এবং বাস্তবে যে কোনও পদ্ধতিতে অনুরোধ করা (একই বস্তুতে) একই মনিটরটিকে লক করার চেষ্টা করবে। এটি প্রায়শই নতুনদের খুঁজে বের করে।
একটি মনিটর এমন একটি সত্তা যা লক এবং একটি ওয়েট সেট উভয়েরই অধিকারী । জাভাতে, যে কোনও Object
মনিটরের কাজ করতে পারে।
জাভাতে মনিটররা কীভাবে কাজ করে তার বিশদ ব্যাখ্যার জন্য, আমি জাভাতে কনক্যান্ট প্রোগ্রামিংয়ের মনিটর মেকানিক্স বিভাগটি পড়ার পরামর্শ দিই (পূর্ববর্তী লিঙ্কটি গুগল বইগুলিতে পূর্বরূপ প্রদর্শন করে এবং সেই বিভাগটি পড়ার জন্য উপলব্ধ)।
Wakes up all threads that are waiting on this object's monitor.
নোটিফিয়াল () সম্পর্কে বলি, আমি যে জিনিসটি পাই তা রক্ষা করা হয় (অভ্যন্তরীণ সত্তা / বস্তুর সহায়তায়) সমস্ত থ্রেড লকের জন্য অপেক্ষা করছে, সেই অভ্যন্তরীণ সত্তা / বস্তুকে মনিটর বলা হয়?
জাভা ভাষা এবং রানটাইম সিস্টেম মনিটরের ব্যবহারের মাধ্যমে থ্রেড সিঙ্ক্রোনাইজেশন সমর্থন করে।
একটি মনিটর একটি নির্দিষ্ট ডেটা আইটেমের সাথে সম্পর্কিত (শর্ত পরিবর্তনশীল) এবং সেই ডেটাতে লক হিসাবে কাজ করে। যখন কোনও থ্রেড কিছু ডেটা আইটেমের জন্য মনিটর রাখে, অন্য থ্রেড লক আউট হয়ে যায় এবং ডেটাটি পরীক্ষা বা পর্যালোচনা করতে পারে না।
http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#33308
একবারে একবারে অবজেক্টগুলিতে অ্যাক্সেস নিয়ন্ত্রণ করার একটি প্রক্রিয়া
মনিটর একটি সিঙ্ক্রোনাইজেশন কনস্ট্রাক্ট যা থ্রেডগুলিকে পারস্পরিক বর্জন এবং একটি নির্দিষ্ট শর্তটি সত্য হওয়ার জন্য অপেক্ষা (ব্লক) করার ক্ষমতা উভয়কেই করতে দেয়।
মনিটরের কাছে অন্যান্য থ্রেডের সংকেত দেওয়ার জন্যও একটি প্রক্রিয়া রয়েছে যা তাদের শর্তটি মেটেছে। এটি এমন একটি সত্তা যা লক এবং একটি ওয়েট সেট উভয়েরই অধিকারী। জাভাতে, যে কোনও অবজেক্ট মনিটরের কাজ করতে পারে।
জাভা ভার্চুয়াল মেশিনে প্রতিটি বস্তু এবং শ্রেণি যৌক্তিকভাবে একটি মনিটরের সাথে যুক্ত। মনিটরের পারস্পরিক বর্ধন ক্ষমতা বাস্তবায়নের জন্য, প্রতিটি লজ এবং শ্রেণীর সাথে একটি লক (কখনও কখনও মিউটেক্স নামে পরিচিত) যুক্ত হয়। এটিকে অপারেটিং সিস্টেমের ক্ষেত্রে একটি সেমফোর বলা হয়, মুটেক্স একটি বাইনারি সেমফোর।
http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/monitors.html
মনিটর অবজেক্ট বা ডেটা মেম্বারের সাথে সহযোগী, যা যখন কোনও ডেটা সদস্য বা অবজেক্ট প্রবেশ করানো হয় তখন সিঙ্ক্রোনাইজেশন ব্লক (সমালোচনামূলক বিভাগ) হয় এবং প্রস্থান হওয়ার পরে ছেড়ে যায়।