문제

이 코드가 주어진다 :

public class Messager implements Runnable {            

  public static void main(String[] args) {   
      new Thread(new Messager("Wallace")).start();    
      new Thread(new Messager("Gromit")).start();             
  }             
  private String name;                 
  public Messager(String name) { this.name = name; }             
  public void run() {    
      message(1); message(2);    
  }           
  private synchronized void message(int n) {    
    System.out.print(name + "-" + n + " ");    
  }    
}

나는 그것을 이해한다 synchronized 키워드는 스레드가 객체의 잠금에 의존하게 만듭니다. 질문:

a) 방법이 synchronized 마무리? 또는 스레드가 되 자마자 run() 메소드 마감 b) 스레드 중 하나가 이름을 인쇄하고 1 2 다른 쪽보다 먼저?

도움이 되었습니까?

해결책

A. 예. 즉시 출시되었습니다 synchronized 기능이 완료됩니다.
B. 예. 할 수는 있지만 그렇게하고 싶다면 왜 멀티 스레드 코드를 처음에 작성하겠습니까? synchronized 주문에 관한 것이 아니라 원자력을 보장하지만 깃발이 변경되기를 기다려 주문을 집행 할 수 있습니다. 어쨌든, 당신이 시행하려는 것은입니다 순차적. 당신은 단일 스레드 환경에서 무료로 이것을 얻습니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top