2013년 8월 25일 일요일

쓰레드.

* finalize()
- object 메서드
- garbage collector 가 호출  -> 인스턴스 해제 전





=========================================================================

중첩 클래스 (inner class)
- 클래스 내부에 선언하는 클래스
- 1) top lever inner class: static inner class
      - 다른 클래스에서도 사용하기 위함.

- 2) member inner class
      - outer 클래스의 인스턴스를 통해서만 사용 가능한 클래스

- 3) local inner class
      - 해당 클래스가 선언된 블럭 내에서만 사용 가능한 클래스.

- 4) anonymous inner class
      - 이름이 없는 클래스
      - 클래스를 정의한 직후 바로 인스턴스 생성함.
      - 오로지 한개의 인스턴스만 필요한 경우에 사용.

      - 이름 없는 클래스 정의
      new (슈퍼클래스 또는 인터페이스) () { 클래스 정의 }



* 일반 클래스의 명칭: 패키지 멤버 클래스.

* sleep(): 지정한 시간만큼 not runnable 상태로 만드는 것.
 - cpu 쟁탈전에서 제외 시킴. (not runnable)

* 여러 스레드가 동시에 진입하여 같은 객체를 다룰 때 문제가 발생되는 코드.
=> critical section.   
- 해결책 :  한번에 하나의 스레드 만이 접근할 수 있도록 한다.
- 번호표 나눠준다. ex) 화장실 키, 번호표
- 접근 가능 여부를 관리하기 위한 값 => mutual exclusion (= mutex:뮤텍스)

* 뮤텍스 방식
- 뮤텍스 방식은 오로지 1개의 스레드만이 접근 가능한 것.
- 1개만 가능한 세마포어

* semaphore(세마포어)
- 일정한 개수까지는 접근 가능하게 하는 방식.

* synchronized
- 한번에 하나의 스레드만이 진입 할 수 있게 하는 설정.
- synchronized로 설정된 블럭은 한번에 하나의 스레드 만이 접근 가능하다.
- 그러나 객체가 다르다면 동시 진입 가능하다.
- mutex(1개만 가능한 semaphore)는 같은 객체에 대해서 적용한다.




댓글 없음:

댓글 쓰기