세마포어는 OS에서 제공해주는 교착상태(Dead Lock) 방지 기능을 하는 기법 중 하나이다.
세마포어가 하는 일은 세가지가있다.
1. 카운팅(Counting)
해당 영역에 접근 가능한 숫자를 정하고 제한한 쓰레드만 코드 안에
접근가능하게하여 교착상태를 방지한다.
2. 상호배제(Mutual exclusion)
카운팅 세마포어의 방법중하나로 한 쓰레드만 해당 코드안에 진입 가능하게 한다.
카운팅 세마포어에서 개수가 1인 세마포어가 해당된다.
3. 동기화(Synchronization)
세마포어의 카운트가 0에서 시작한다.
한쪽 코드에선 Wait 상태로 들어가기만 하고 한쪽 코드에선 Relese 상태로 가기만 한다.
한 쓰레드가 끝나면 다른 쓰레드가 완료 될 때까지 기다리는 역할을 한다.
이번 포스팅에서는 상호 배제만 다루기로 한다.
세마포어를 사용하지 않았을때 세마포어를 사용 하였을때
사용 하였을 때와 사용하지 않을때 확실히 차이가 있다.
'공부 > Java' 카테고리의 다른 글
[자바 GUI] 자바 JTabbedPane 활용 (0) | 2015.11.08 |
---|---|
[자바] 사용자 문서 경로 얻기 (0) | 2015.11.02 |
[자바 GUI] JTextArea, JScrollPane (0) | 2015.09.24 |
[자바 GUI] JLabel, JTextField (0) | 2015.09.24 |
[자바 GUI] BoxLayout (0) | 2015.09.23 |