세마포어는  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

+ Recent posts