হ্যাঁ, জাভাতে run() মেথড সিঙ্ক্রোনাইজ করা যায়, কিন্তু এটি প্রয়োজনীয় নয় কারণ এই মেথডটি একটি একক থ্রেড দ্বারা এক্সিকিউট হয়। তাই run() মেথডের জন্য সিঙ্ক্রোনাইজেশন প্রয়োজন হয় না। অন্য ক্লাসের নন-স্ট্যাটিক মেথড সিঙ্ক্রোনাইজ করা ভালো অভ্যাস কারণ এটি একই সাথে একাধিক থ্রেড দ্বারা আহ্বান করা হতে পারে।
উদাহরণ
public class SynchronizeRunMethodTest implements Runnable {
public synchronized void run() {
System.out.println(Thread.currentThread().getName() + " is starting");
for(int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName() + " is running");
} catch(InterruptedException ie) {
ie.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName() + " is finished");
}
public static void main(String[] args) {
SynchronizeRunMethodTest test = new SynchronizeRunMethodTest();
Thread t1 = new Thread(test);
Thread t2 = new Thread(test);
t1.start();
t2.start();
}
}
আউটপুট
Thread-0 is starting Thread-0 is running Thread-0 is running Thread-0 is running Thread-0 is running Thread-0 is running Thread-0 is finished Thread-1 is starting Thread-1 is running Thread-1 is running Thread-1 is running Thread-1 is running Thread-1 is running Thread-1 is finished