-
19-09-2019 - |
문제
이 코드가 주어진다 :
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
주문에 관한 것이 아니라 원자력을 보장하지만 깃발이 변경되기를 기다려 주문을 집행 할 수 있습니다. 어쨌든, 당신이 시행하려는 것은입니다 순차적. 당신은 단일 스레드 환경에서 무료로 이것을 얻습니다 :)
제휴하지 않습니다 StackOverflow