Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 run() 메서드를 동기화할 수 있습니까?


, 우리는 Java에서 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