The Boxer

Synchronized 본문

Java

Synchronized

Prower 2018. 10. 19. 12:23
728x90
반응형

[Synchronized]

- Java 실행시 두개 이상의 쓰레드가 사용된다고 할때 사용되는 자원에 대해서 제어를 해줘야함

- 예를들어 2개 이상의 쓰레드가 하나의 변수(자원)에 접근한다고 가정할 때, 두 쓰레드가 동시에 변수를 사용하면 결과에 오류가 날 수도 있음

- 따라서 하나의 쓰레드가 자원에 접근하는 경우 다른 쓰레드는 그 자원에 접근하지 못하도록 [동기화] 시켜줘야 함

- 동기화는 자원에 대한 동기화, 메소드에 대한 동기화가 존재함

- 하지만 과도하게 동기화를 할 경우 프로그램의 실행 속도가 줄어든다는 단점이 있음


[변수/객체에 사용하는 예시]

private Object object = new Object();

public void method() {

    synchronized(object);

    //코드 실행...

}

- 변수에 사용할 경우 쓰레드에 의해 변수가 사용중일 때 다른 쓰레드가 접근하지 못하게 할 수 있다



[메소드에 사용하는 예시]

public synchronized void method() {     //코드 실행... }

- 메소드에 사용할 경우 쓰레드가 메소드를 사용중이면 다른 쓰레드가 메소드에 접근하지 못하게 한다






728x90
반응형

'Java' 카테고리의 다른 글

자바 용어정리Spring - Beans와 POJO  (0) 2018.11.23
Lombok  (0) 2018.10.02
Calllback과 Synchronous/Asynchronous  (0) 2018.09.27
log4j를 사용한 logging  (1) 2018.07.17
Interface를 사용한 Callback 구현  (0) 2018.07.16
Comments