System.out.println("Hello, World");

'동기화'에 해당되는 글 1건

  1. 2012.04.26 Multi thread 상황에서 Data 동기화(Synchronized)

○ Multi-thread상황에서 Data 동기화(Synchronized)

- 데이터를 공유하는 상황에서 한 클라이언트가 데이터 사용중인 다른 클라이언트가 이 데이터를 수정했을때 데이터의 무결성이 깨져 버린다.


○ Multi thread 상황에서 Data동기화 문제의 소지(synchronized)

- Local 변수 (X)

- Instance 변수 (O) : 동시에 변경을 시도 할때

- Static 변수 (O)

- Attribute

◎ request scope (X)

◎ session scope 이론적으로는 가능(O), 실제로는 불가능(X)

◎ application scope (O)


○ Data 동기화 처리 개념

- 사용중인 데이터에 Lock을 건다.


구문

synchronized(this){


데이터 사용


} //데이터 사용 끝(Lock 해제)


◆ synchronized 사용전

- 동시에 두 클라이언트가 접속을 시도하면 5초후 둘다 같은 숫자를 부여 받는다.


◆ synchronized 사용후

- 동시에 두 클라이언트가 접속을 시도하면 조금이라도 먼저 시도한 클라이언트가 5초 후 앞 번호를 가져간다. (다른 숫자 부여)

  그리고 2번쨰 클라이언트는 총 10초의 sleep time을 갖는다.(앞 클라이언트의 작업이 끝날 동안 Lock이 걸리기 때문)

Posted by 김마농