반응형
동시성 : 하나의 코어에서 멀티 스레드를 번갈아가며 수행하는 성질
병렬성 : 멀티 코어에서 개별 스레드를 동시에 실행하는 성질
동기화(Synchronized)
-싱글 스레드 프로그램에서는 한 개의 스레드 객체를 독차지해서 사용하면 되지만, 멀티 스레드는 스레드들이 객체를 공유해서 작업해야할 경우가 있다.
이 경우, A를 사용하던 객체가 B에 의해 상태가 변경될 수 있기 때문에 A가 의도했던 것과 다른 결과를 얻을 수 있다.
그래서 스레드가 사용중인 객체를 다른 스레드가 변경할 수 없도록 하려면 스레드 작업이 끝날 때까지 객체에 lock을 걸어서 다른 스레드가 사용할 수 없도록 해야한다. 멀티 스레드 프로그램에서 단 하나의 스레드만 실행하도록 할 수 있는 영역을 임계영역(Critical section)이라고 한다. 이 임계영역을 지정하기 위해 동기화(Synchronized) 메소드와 동기화 블록을 사용한다. 그래서 이 스레드가 객체 내부에 동기화 메소드 또는 블록이 들어가면 즉시 객체에 잠금을 걸어 다른 스레드가 임계 영역 코드를 실행하지 못하도록 한다.
반응형
'Language > Java' 카테고리의 다른 글
Java static 키워드 (0) | 2016.08.11 |
---|---|
java final 키워드 (0) | 2016.08.11 |
[NIO] 파일 채널(FileChannel) (0) | 2016.04.06 |
달력만들기 (0) | 2016.03.25 |
Java 줄바꿈 처리 (0) | 2016.03.07 |