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
반응형