আমি জানি যে synchronize
কোনও পদ্ধতির আগে কীওয়ার্ড ব্যবহার করা সেই বস্তুর সাথে সিঙ্ক্রোনাইজেশন নিয়ে আসে। অর্থাৎ বস্তুর একই উদাহরণে চলমান 2 টি থ্রেড সিঙ্ক্রোনাইজ হবে।
তবে, যেহেতু সিঙ্ক্রোনাইজেশন অবজেক্ট স্তরে রয়েছে তাই 2 টি থ্রেড অবজেক্টের বিভিন্ন দৃষ্টান্তে সিঙ্ক্রোনাইজ হবে না। আমাদের যদি জাভা ক্লাসে স্ট্যাটিক ভেরিয়েবল থাকে যা পদ্ধতি দ্বারা ডাকা হয়, আমরা এটি ক্লাসের উদাহরণগুলিতে সিঙ্ক্রোনাইজ করতে চাই। দুটি উদাহরণ দুটি পৃথক থ্রেডে চলছে।
আমরা কি নিম্নলিখিত উপায়ে সিঙ্ক্রোনাইজেশন অর্জন করতে পারি?
public class Test
{
private static int count = 0;
private static final Object lock= new Object();
public synchronized void foo()
{
synchronized(lock)
{
count++;
}
}
}
এটি সত্য যেহেতু আমরা lock
স্থিতিশীল কোনও বস্তুর সংজ্ঞা দিয়েছি এবং আমরা synchronized
সেই লকের জন্য কীওয়ার্ডটি ব্যবহার করছি, স্ট্যাটিক ভেরিয়েবলটি count
এখন শ্রেণীর উদাহরণগুলিতে সিঙ্ক্রোনাইজ হয়ে গেছে Test
?