자바(Java)/JAVA 2SE

동기화(Synchronization)

본클라쓰 2010. 4. 28. 20:12

 

 동기화란 하나의 자원을 여러 쓰레드가 사용하려 할 때에, 한 시점에서 하나의 쓰레드만 사용할 수 있도록 하는 것을 의미한다. 자바에서 동기화를 사용하기 위해서는 'synchronized' 키워드를 사용한다. 동기화 키워드가 붙은 메소드는 하나의 쓰레드밖에 접근할 수 없고, 다른 쓰레드는 접근한 쓰레드가 완전히 종료한 후 접근할 수 있다.

 

 

동기화 메소드를 선언하는 방법은 다음과 같습니다.

접근제어자 synchronized 반환형 메소드이름 (인자) {

    ... ...

 

 동기화가 중요한 이유는 쓰레드로 실행되는 자바 객체의 데이터 처리에 중복을 방지할 수 있기 때문이다. 예를 들어, 데이터베이스에 접근하여 데이터베이스를 수정하는 객체가 여러 사람에 의해 작업을 동시에 수행하면 데이터의 오류를 발생할 수 있다. 이럴때 동기화로 메소드를 처리하면 한번에 하나씩 처리되기 때문에 데이터의 오류를 방지할 수 있다.

 

 또한, 웹 어플제작 플랫폼이 J2EE는 톰캣이라는 웹 컨테이너에서 돌고 웹 컨테이너는 자바객체를 쓰레드로 처리하기 때문에 중요한 자료의 접근에 대해서는 동기화를 시켜주어야 한다.