Có , chúng ta có thể đồng bộ hóa phương thức run () trong Java, nhưng không bắt buộc vì phương thức này chỉ được thực thi bởi một luồng duy nhất. Do đó đồng bộ hóa không cần thiết cho run () phương pháp. Cách thực hành tốt là đồng bộ hóa phương pháp không tĩnh của lớp khác vì nó được gọi bởi nhiều luồng cùng một lúc.
Ví dụ
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(); } }
Đầu ra
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