Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เราสามารถซิงโครไนซ์เมธอด run() ใน Java ได้หรือไม่?


ใช่ เราสามารถซิงโครไนซ์เมธอด run() ใน Java ได้ แต่ไม่จำเป็นเพราะวิธีนี้ใช้เธรดเดียวเท่านั้น ดังนั้น การซิงโครไนซ์ ไม่จำเป็นสำหรับ 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