면접 - 자바

개발자 면접 질문 - 동기화 (synchronized) 정의

snow-line 2020. 12. 2. 21:33
반응형

1. 동기화 (synchronized)

 - 한 객체에  여러 쓰레드가 동시에 접근해 사용하는 것을 막기 위해 사용한다.

 - synchronized 식별자가 붙은 메서드는 한번에 하나의 쓰레드만 접근이 가능하다.

 - 메서드가 사용 중일 때 다른 쓰레드가 메서드를 호출하면 앞의 쓰레드가 종료될 때까지 기다려야 한다.

 

* synchronized 를 메서드에 선언하면 해당 메서드가 Lock 걸려서 다른 쓰레드가 못들어온다.

* synchronized(this) {} 를 사용하면 메서드 내에서 특정 블럭만 동기화 처리를 한다.

* static 메서드에서 동기화 블럭을 사용할 때 synchronized(클래스명.class) 를 사용한다.

* 동기화 순서를 유지하기 위해서는 아래와 같이 코드를 작성하면 된다.

 

thread1.start()

thread1.join();

 

thread2.start()

thread2.join();

 

thread3.start()

thread3.join();

반응형